在资源字典中定义样式时,您可以使用其中之一
x:Name="xyz"
Run Code Online (Sandbox Code Playgroud)
和
x:Type="xyz".
Run Code Online (Sandbox Code Playgroud)
并且可以像{StaticResource xyz}一样在XAML中引用这种风格.
大多数示例使用'x:Key','name'和'key'之间的区别在于使用'x:name'可以让你使用这个样式定义代码隐藏?
修正: 问题完全错了.打算要问的是x:Key和x:Name之间的区别.但是我自己并没有尝试这个代码,而只是依赖于记忆 - 我认为我在ResourceDictionary中都有这个,这是错误的.我也没有这样的代码
<xxx.Resources >
Run Code Online (Sandbox Code Playgroud)
部分,因为它也不起作用.你不能引用没有x:Key的样式(x:Name在这里不起作用),并且添加两个没有x的样式:Key抛出异常,因为它们在字典中都得到相同的(空?)键.
Ray非常好地表达了所有的不同,谢谢.
我的错
这是一个棘手的问题. 实际上,您无法使用其中任何一种在ResourceDictionary中定义样式
x:Type="xyz"
Run Code Online (Sandbox Code Playgroud)
要么
x:Name="xyz"
Run Code Online (Sandbox Code Playgroud)
这是区别:
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}"
Run Code Online (Sandbox Code Playgroud)
而x:Name且x:Key是能够在元件中使用的属性.
| 归档时间: |
|
| 查看次数: |
5572 次 |
| 最近记录: |