2011-07-08 27 views
1

私はここで何が欠けているのか分かりません。 ContentPresenterのコンテンツをUIElementにバインドしたいと思います。私が直接でのTextBlockを置くことができますが、私はそれが何も表示されないのContentPresenterをしようとすると、MainWindow.cscontentPresenterのコンテンツをバインドできません

UIElement Element { get; set; } 

public MainWindow() 
{ 
    Element = new TextBox() { Text = "A" }; 
    DataContext = this; 
    InitializeComponent(); 
} 

<Window.Resources> 
    <DataTemplate x:Key="container"> 
     <Border> 
      <!--<TextBlock Text="A"/>--> 
      <ContentPresenter Content="{Binding Element}" /> 
     </Border> 
    </DataTemplate> 
</Window.Resources> 
<ContentControl DataContext="{Binding}" ContentTemplate="{StaticResource container}" /> 

:私はこのような何かをやっています。

答えて

7

ContentTemplateのコンテンツのテンプレートです。したがって、ContentControlの場合、Contentは、のDataContextになります。しかし、WindowContentと設定することはできません。バインドするプロパティはパブリックにする必要があります。

Soは、Element公共の財産を作るとにXAMLを変更した後:

<Window.Resources> 
    <DataTemplate x:Key="container"> 
     <Border> 
      <ContentPresenter Content="{Binding}" /> 
     </Border> 
    </DataTemplate> 
</Window.Resources> 
<ContentControl Content="{Binding Element}" ContentTemplate="{StaticResource container}" /> 

「」ウィンドウに表示されます。

これは実際に問題が発生したコードではないと思われますが、このようなことは非常に奇妙に見えます。たぶんあなたはあなたのデザインを考え直すべきでしょう。

+0

よく置いてください!最初の問題は '要素'が公開されていないことです。第2の問題は、ContentControlに 'Content'がなく、したがってContentTemplateにテンプレートを使用するコンテンツがないことです。 – Scott

関連する問題