2016-03-23 16 views
2

タイトルが示唆するように、要素のコードを実行時にレンダリングするデータテンプレートに挿入しようとしています。ここで要素の背後にXAMLデータテンプレートのコードを挿入します

は私がに要素の背後にあるコードを挿入したいのですが、私のXAMLコードの一部です:

<TabControl x:Name="tcDocuments" DockPanel.Dock="Top"> 
    <TabControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Name}" /> 
       <Button Content="x" /> 
      </StackPanel> 
     </DataTemplate> 
    </TabControl.ItemTemplate> 
    <TabControl.ContentTemplate> 
     <DataTemplate> 
      (INSERT CLASS BELOW'S CONTENT PROPERTY HERE) 
     </DataTemplate> 
    </TabControl.ContentTemplate> 
</TabControl> 

そして、ここで私はTabControlの上記のアイテムに追加されるクラスです。

public class DocumentTab 
{ 
    public string File { get; set; } 
    public string Name { get; set; } 
    public RichTextBox Content { get; set; } 
} 

新しいDocumentTabオブジェクトをTabControlのItemリストに追加するたびに、RichTextBoxプロパティ "Content"がDataTemplateタグに挿入されます。

本当の質問はこれが可能でしょうか?

乾杯。

+1

が、それは常にDocumentTabなります(唯一のコードビハインドに示されているが)のUIElementにコンテンツを設定するいくつかの例を示しますか? TabControlのItemsSourceをObservableCollection にバインドし、DataTemplateをRichTextBoxにすることができますか? Contentのデータタイプを変更する必要があります。 – matt

+0

DataTemplateにContentControlを配置し、そのContentプロパティをDocumentTabのContentプロパティまたはContentプロパティを持つモデルのバインディングに設定できます。これにより、Contentプロパティーを持つ任意のクラスを使用できます –

+0

通常、モデル内のUIエレメント( 'RichTextBox')は参照しないでください。 –

答えて

0

あなたはこのようなあなたのDataTemplateでContentControlにを置くことができます:あなたはちょうどそのテンプレートが適切なのDataContextを持っているか、変更される場合があります結合にあるものを確認する必要があり

<DataTemplate> 
    <ContentControl Content="{Binding Content}"/> 
</DataTemplate> 

これは、DocumentTabに固有のものではなく、コンテンツプロパティがUIElementであるクラスを持つことができるという利点があります。

このMSDN Documentation on ContentControl.Contentはあなたにいくつかのより多くの情報を提供し、

関連する問題