gpt4 book ai didi

WPF 样式 : difference between x:Name and x:Type

转载 作者:行者123 更新时间:2023-12-04 13:55:38 26 4
gpt4 key购买 nike

在资源字典中定义样式时,您可以使用

x:Name="xyz"


x:Type="xyz". 

并且可以在 XAML 中引用此样式,例如 {StaticResource xyz}。

大多数示例使用 'x:Key',而 'name' 和 'key' 之间的区别在于使用 'x:name' 可以让您使用这种样式定义代码隐藏?

修复:
这个问题是完全错误的。想要询问的是 x:Key 和 x:Name 之间的区别。但是我自己并没有去尝试这段代码,而只是依靠内存——我以为我在 ResourceDictionary 中都有,这是错误的。而且我也没有这样的代码
 <xxx.Resources > 

部分,因为它也不起作用。您不能引用没有 x:Key 的样式(x:Name 在这里不起作用),并且在没有 x:Key 的情况下添加两种样式会引发异常,因为两者都在字典中获得相同的(空?)键。

雷以非常好的方式提出了所有不同之处,谢谢。
我的错

最佳答案

这是一个技巧问题。 其实你不能 使用任一方法在 ResourceDictionary 中定义样式

x:Type="xyz"

或者
x:Name="xyz"

这是区别:
  • x:Type="xyz"不是有效的 XAML 语法。
  • x:Name="xyz"实际上是有效的 XAML 语法,它命名对象(这会影响代码隐藏的生成)但不提供字典键。
  • x:Key="xyz"也是提供字典键但不命名对象的有效 XAML 语法。

  • 在字典中需要一个键,所以你必须指定 x:Key (除了 FrameworkTemplate 及其子类,可以从 TargetType 或 DataType 推断出键)。在字典中你也可以指定 x:Name如果需要,但它不会影响 key 。

    请注意 x:Type是由 XAML 预定义的标记扩展,而 x:Namex:Key是实际的 XAML 关键字。所以 x:Type只能在标记扩展语法中用作属性的值:
    something="{x:Type whatever}"

    x:Namex:Key是可用于元素的属性。

    关于WPF 样式 : difference between x:Name and x:Type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2162425/

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