对作为 FrameworkElement 的值使用数据绑定

Posted

技术标签:

【中文标题】对作为 FrameworkElement 的值使用数据绑定【英文标题】:Using data binding on value which is a FrameworkElement 【发布时间】:2011-02-03 16:01:06 【问题描述】:

我的一个数据源生成一组值,这些值被输入到以下接口

public interface IData

    string Name  get; 
    FrameworkElement VisualElement  get; 

我想在 WPF 中使用数据绑定在 TabControl 中显示 IData 实例的集合,其中 Name 值成为选项卡的标题,VisualElement 值显示为内容的相应选项卡。

绑定标题是直截了当的。我被困在如何定义一个允许我显示VisualElement 值的模板上。我尝试了许多解决方案,但收效甚微。我的最佳尝试如下。

    <TabControl ItemsSource="Binding">
        <TabControl.ItemTemplate>
            <DataTemplate>
                <Label Content="Binding Name"/>
            </DataTemplate>
        </TabControl.ItemTemplate>
        <TabControl.ContentTemplate>
            <DataTemplate>
                How do I display VisualElement here?
            </DataTemplate>
        </TabControl.ContentTemplate>
    </TabControl> 

我对 WPF 还是很陌生,所以我可能会错过这里的明显内容。

【问题讨论】:

【参考方案1】:

ContentPresenters 就是为此而生的。内容模板变为:

        <TabControl.ContentTemplate>
            <DataTemplate>
                <ContentPresenter Content="Binding VisualElement" />
            </DataTemplate>
        </TabControl.ContentTemplate>

我使用TextBlockTextBox 对其进行了测试。

【讨论】:

像冠军一样工作!谢谢!

以上是关于对作为 FrameworkElement 的值使用数据绑定的主要内容,如果未能解决你的问题,请参考以下文章

找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。渐变停止

属性已由“FrameworkElement”注册

WPF 管理 FrameworkElement 未找到错误

找不到管理 FrameworkElement

WPF 样式中的绑定导致莫名其妙的“找不到管理 FrameworkElement”错误

WPF 错误:找不到目标元素的管理 FrameworkElement