gpt4 book ai didi

c# - 将元素后面的代码注入(inject) XAML 数据模板

转载 作者:行者123 更新时间:2023-11-30 17:38:56 25 4
gpt4 key购买 nike

正如标题所暗示的那样,我希望将代码隐藏元素注入(inject)数据模板以在运行时呈现。

这是我的 XAML 代码片段,我想将元素后面的代码注入(inject)到:

<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 标记中。

我想真正的问题是这可能吗?

干杯。

最佳答案

您可以像这样在 DataTemplate 中放置一个 ContentControl:

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

您只需确保该模板所在的内容具有正确的 DataContext,否则绑定(bind)可能会发生变化。

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

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

关于c# - 将元素后面的代码注入(inject) XAML 数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36185174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com