WPF样式:x:Name和x:Type之间的区别
在资源字典中定义样式时,您可以使用其中一种
x:Name="xyz"
和
x:Type="xyz".
并且可以像{StaticResource xyz}一样在XAML中引用此样式。
大多数示例使用'x:Key','name'和'key'之间的区别在于使用'x:name'可以让你使用这个样式定义代码隐藏?
修正:这个问题是完全错误的。 打算要问的是x:Key和x:Name之间的区别。 但是我自己并没有去尝试这个代码,而只是依赖于回忆 - 我以为我在ResourceDictionary中都有这两个错误。 而且我也没有这样的代码
<xxx.Resources >
部分,因为它也不起作用。 您不能引用没有x:Key(x:Name在此不起作用)的Style,并且添加两个不带x:Key的样式,因为它们在字典中都获得相同(空?)键,所以会引发异常。
Ray以非常好的方式提供了所有的差异,谢谢。
我的错
这是一个诡计的问题。 实际上,您无法使用任何一种方式在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
,但不影响该键。
请注意, x:Type
是由XAML预定义的标记扩展,而x:Name
和x:Key
是实际的XAML关键字。 所以x:Type
只能在标记扩展语法中用作属性的值:
something="{x:Type whatever}"
而x:Name
和x:Key
是可用于元素的属性。
x:名称允许您创建可以按名称使用的引用。
x:type允许您创建该类型使用的引用
例如
<Style TargetType="{x:Type Button}">
...
</Style>
创建一个会自动影响按钮的样式
链接地址: http://www.djcxy.com/p/21235.html上一篇: WPF styles: difference between x:Name and x:Type
下一篇: INotifyPropertyChanged vs. DependencyProperty in ViewModel