C# 将代码隐藏元素注入XAML数据模板
正如标题所示,我希望将代码隐藏元素注入到数据模板中,以便在运行时呈现 下面是我想将代码隐藏元素注入的XAML代码片段:C# 将代码隐藏元素注入XAML数据模板,c#,wpf,C#,Wpf,正如标题所示,我希望将代码隐藏元素注入到数据模板中,以便在运行时呈现 下面是我想将代码隐藏元素注入的XAML代码片段: <TabControl x:Name="tcDocuments" DockPanel.Dock="Top"> <TabControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal">
<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的项目列表添加一个新的DocumentTab对象时,RichTextBox属性“Content”就会插入到DataTemplate标记中
我想真正的问题是这可能吗
干杯。您可以在数据模板中放置ContentControl,如下所示:
<DataTemplate>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
您只需确保模板中的任何内容都具有适当的DataContext,否则绑定可能会更改
这样做的好处是,它不是特定于DocumentTab的,您可以拥有任何具有作为UIElement的内容属性的类
这为您提供了更多信息,并展示了一些将内容设置为UIElements的示例(尽管仅在代码后面显示)它是否始终是DocumentTab?您可以将TabControl的ItemsSource绑定到ObservableCollection,并使DataTemplate成为RichTextBox吗?您需要更改内容的数据类型。您可以在DataTemplate中放置ContentControl,并将其内容属性设置为与DocumentTab的内容属性的绑定,或任何具有内容属性的模型。这允许您使用任何具有内容属性的类。您通常不应该在模型中引用UI元素(
RichTextBox
)。
<DataTemplate>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>