WPF DataTemplate - x:Key vs DataType =“{x:Type XXXX”)

时间:2009-12-23 15:58:44

标签: wpf xaml datatemplate

我想要使用FrameworkElement.FindResource()找到一个DataTemplate。为此,我需要在数据模板上有一个键。

问题是x:key和分配数据类型是互斥的。 (Reference

因此,一旦我为我的模板设置了DataType,我如何找到Key值?是否有一些公式将DataTemplate转换为Key的字符串?

(关于为什么我需要获取资源找到的DataTemplate的原因,请参阅此question

1 个答案:

答案 0 :(得分:19)

x:Key似乎是System.Windows.DataTemplateKey类型的对象。因此,您可以使用new DataTemplateKey(typeof(myType))“创建”资源的密钥。 <{1}}将使用此密钥,因为FindResource已被覆盖。

这是一个非常简单的示例应用程序:

XAML:

TemplateKey.Equals

代码隐藏:

<Window ...>
    <Window.Resources>
        <DataTemplate DataType="{x:Type TextBlock}">
        </DataTemplate>
    </Window.Resources>

    <Button Click="Button_Click">Test</Button>
</Window>