正如标题所示,我希望将元素注入到数据模板中,以便在运行时呈现。
这是我的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标记中。
我想这里真正的问题是这可能吗?
干杯。
答案 0 :(得分:0)
您可以将ContentControl放在DataTemplate中,如下所示:
<DataTemplate>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
您必须确保该模板所具有的内容具有正确的DataContext或绑定可能会发生变化。
这样做的好处是它不是特定于DocumentTab,您可以拥有任何具有您的UIElement的Content属性的类。
这个MSDN Documentation on ContentControl.Content为您提供了更多信息,并展示了将内容设置为UIElements的一些示例(尽管仅在代码隐藏中显示)