有关此xaml标记扩展的问题

时间:2010-07-01 15:19:18

标签: c# wpf xaml markup-extensions

我正在尝试了解下面的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>

感谢。

2 个答案:

答案 0 :(得分:2)

那么,该示例将不会执行任何操作 - 相反,它将失败,因为它不是WPF命名空间中名为Example的标记扩展。

但是如果一个名为Example的标记扩展,它会做的是实例化一个ExampleMarkupExtension对象,设置它的ResourceKey属性,然后调用它的ProvideValue方法,它将返回一个对象,该对象将被用作要添加到资源字典中的项的键。

如果没有更多背景信息,很难知道您提供的示例是什么意图。我猜想所展示的概念是a)资源字典的关键字可以是任何对象,而不仅仅是字符串,b)你可以使用标记扩展来生成该密钥。一个真实的例子:

<DataTemplate x:Key="{x:Type TextBox}">

DataTemplate的密钥typeof(TextBox)添加到资源字典中。

答案 1 :(得分:0)

通常x:Key属性允许您按键引用资源,在这种情况下,因为模板不在ResourceDictionary中,我不确定它是否有任何用途!

希望这有帮助!