顾名思义,我希望将元素后面的代码注入到要在运行时呈现的数据模板中。
这是我想将元素后面的代码注入到我的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的“项目”列表中时,RichTextBox属性“ Content”都会插入到DataTemplate标记中。
我想这里的真正问题是可能吗?
干杯。
最佳答案
您可以将ContentControl放在DataTemplate中,如下所示:
<DataTemplate>
<ContentControl Content="{Binding Content}"/>
</DataTemplate>
您只需要确保模板中的任何内容都具有正确的DataContext,否则绑定可能会更改。
这样做的好处是它不是特定于DocumentTab的,您可以将任何具有Content属性的Class用作UIElement。
此MSDN Documentation on ContentControl.Content提供了更多信息,并显示了将内容设置为UIElements的一些示例(尽管仅在后面的代码中显示)
关于c# - 将元素后面的代码注入(inject)XAML数据模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36185174/