顾名思义,我希望将元素后面的代码注入到要在运行时呈现的数据模板中。

这是我想将元素后面的代码注入到我的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/

10-17 02:47