【问题标题】:Question about this xaml markup extension关于这个 xaml 标记扩展的问题
【发布时间】:2011-03-10 16:57:21
【问题描述】:

我想了解下面 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>

谢谢。

【问题讨论】:

    标签: c# wpf xaml markup-extensions


    【解决方案1】:

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

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

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

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

    将带有typeof(TextBox) 键的DataTemplate 添加到资源字典中。

    【讨论】:

      【解决方案2】:

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

      希望这会有所帮助!

      【讨论】:

      • 嗨,假设 DataTemplate 在 中声明,但 x:Key 属性是允许其他元素引用为其声明该属性的元素(在这种情况下, DataTemplate),我的问题是这个标记扩展对此做了什么。谢谢。
      猜你喜欢
      • 2012-02-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多