タイトルが示唆するように、要素のコードを実行時にレンダリングするデータテンプレートに挿入しようとしています。ここで要素の背後に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タグに挿入されます。
本当の質問はこれが可能でしょうか?
乾杯。
が、それは常にDocumentTabなります(唯一のコードビハインドに示されているが)のUIElementにコンテンツを設定するいくつかの例を示しますか? TabControlのItemsSourceをObservableCollectionにバインドし、DataTemplateをRichTextBoxにすることができますか? Contentのデータタイプを変更する必要があります。 –
matt
DataTemplateにContentControlを配置し、そのContentプロパティをDocumentTabのContentプロパティまたはContentプロパティを持つモデルのバインディングに設定できます。これにより、Contentプロパティーを持つ任意のクラスを使用できます –
通常、モデル内のUIエレメント( 'RichTextBox')は参照しないでください。 –