我想要使用FrameworkElement.FindResource()
找到一个DataTemplate。为此,我需要在数据模板上有一个键。
问题是x:key和分配数据类型是互斥的。 (Reference)
因此,一旦我为我的模板设置了DataType,我如何找到Key值?是否有一些公式将DataTemplate转换为Key的字符串?
(关于为什么我需要获取资源找到的DataTemplate的原因,请参阅此question。
答案 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>