gpt4 book ai didi

WPF - 在没有键的情况下在 ResourceDictionary 中定义 DataTemplate

转载 作者:行者123 更新时间:2023-12-01 02:50:44 26 4
gpt4 key购买 nike

我已经多次看到这种形式的 wpf 代码示例:

<Window.Resources>
<DataTemplate DataType="{x:Type SomeType}">
<!-- Elements defining the DataTemplate-->
</DataTemplate>
</Window.Resources>

我理解用法,但我不明白为什么这种语法是可以的:由于 ResourceDictionary 实现了 IDictionary,因此我们添加到 Resource 属性的每个元素都必须指定一个键。现在我知道使用 DictionaryKeyPropertyAttribute,一个类可以提供一个隐式键值 - 但在 DataTemplate 类的情况下,提供的属性是“DataTemplateKey”。我知道这听起来有点琐碎,但这个问题的动机是知道如何使用其他类,即使我之前没有特权看到使用示例(可能是某些 3rd 方......)。任何人?

最佳答案

正如您在问题中提到的,没有 x:Key 的条目属性使用 DataTemplateKey(SomeType)作为关键。您只能为特定的 SomeType 指定一个这样的实例。在资源中。 DataTemplateKey 派生自 TemplateKey它本身源自 ResourceKey .当然,这样的 DataTemplate 资源定义可以出现在许多类型中,并保持唯一,因为每个相应类型的 DataTemplateKey 将是唯一的。
例如,考虑以下资源定义:

  <Window.Resources>
<!-- Generic Button data template -->
<DataTemplate DataType="{x:Type Button}">
<!-- Elements defining the DataTemplate-->
</DataTemplate>
<!-- Generic TextBlock data template -->
<DataTemplate DataType="{x:Type TextBlock}">
<!-- Elements defining the DataTemplate-->
</DataTemplate>
<!-- Specific Button data template -->
<DataTemplate x:Key="SpecialButton" DataType="{x:Type Button}">
<!-- Elements defining the DataTemplate-->
</DataTemplate>
</Window.Resources>
这会导致资源字典中出现三个条目。下图中的橙色箭头指向 DataTemplateKey Button 的基于条目和 TextBlock类型,而红色箭头指向 SpecialButton 的特定(键控)条目键控资源:
enter image description here

关于WPF - 在没有键的情况下在 ResourceDictionary 中定义 DataTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5135536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com