将元素后面的代码注入XAML数据模板

时间:2016-03-23 17:44:00

标签: c# wpf

正如标题所示,我希望将元素注入到数据模板中,以便在运行时呈现。

这是我的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 个答案:

答案 0 :(得分:0)

您可以将ContentControl放在DataTemplate中,如下所示:

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

您必须确保该模板所具有的内容具有正确的DataContext或绑定可能会发生变化。

这样做的好处是它不是特定于DocumentTab,您可以拥有任何具有您的UIElement的Content属性的类。

这个MSDN Documentation on ContentControl.Content为您提供了更多信息,并展示了将内容设置为UIElements的一些示例(尽管仅在代码隐藏中显示)