我正在尝试了解下面的x:Key属性的标记扩展是什么以及它是什么类型的标记扩展?
<Window x:Class="App1.Window1" xmlns:dxg="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DataTemplate x:Key="{dxg:Example ResourceKey=Example}">
<dxg:TextEdit Text="123/>
</DataTemplate>
</Window>
感谢。
答案 0 :(得分:2)
那么,该示例将不会执行任何操作 - 相反,它将失败,因为它不是WPF命名空间中名为Example
的标记扩展。
但是如果是一个名为Example
的标记扩展,它会做的是实例化一个ExampleMarkupExtension
对象,设置它的ResourceKey
属性,然后调用它的ProvideValue
方法,它将返回一个对象,该对象将被用作要添加到资源字典中的项的键。
如果没有更多背景信息,很难知道您提供的示例是什么意图。我猜想所展示的概念是a)资源字典的关键字可以是任何对象,而不仅仅是字符串,b)你可以使用标记扩展来生成该密钥。一个真实的例子:
<DataTemplate x:Key="{x:Type TextBox}">
将DataTemplate
的密钥typeof(TextBox)
添加到资源字典中。
答案 1 :(得分:0)
通常x:Key属性允许您按键引用资源,在这种情况下,因为模板不在ResourceDictionary中,我不确定它是否有任何用途!
希望这有帮助!