Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 关于此xaml标记扩展的问题_C#_Wpf_Xaml_Markup Extensions - Fatal编程技术网

C# 关于此xaml标记扩展的问题

C# 关于此xaml标记扩展的问题,c#,wpf,xaml,markup-extensions,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/> <

我试图理解下面的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>


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


希望这有帮助

好吧,这个示例不会做任何事情——相反,它会失败,因为WPF名称空间中没有名为
example
的标记扩展

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

如果没有更多的上下文,就很难知道您提供的示例打算展示什么。我猜正在演示的概念是a)资源字典的键可以是任何对象,而不仅仅是字符串,以及b)可以使用标记扩展生成该键。一个真实的例子:

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


它向资源字典添加一个键为
typeof(TextBox)
DataTemplate

您好,假设DataTemplate是在中声明的,但是x:Key属性允许其他元素引用声明该属性的元素(在本例中为DataTemplate),我的问题是这个标记扩展对此做了什么。谢谢