我只是好奇为什么当我访问大多数控件时x:Name,对于资源我这样做使用x:Key+我无法从代码中访问它(可以使用this.Resources["keyName"])
•x:Key:为ResourceDictionary中的每个资源(或其他框架中的类似字典概念)设置唯一键.x:密钥可能会占到您在典型WPF应用程序标记中看到的x:用法的90%.
•x:Name:指定处理对象元素后在运行时代码中存在的实例的运行时对象名称.通常,您将经常为x:Name使用WPF定义的等效属性.这些属性专门映射到CLR支持属性,因此更方便应用程序编程,您经常使用运行时代码从初始化的XAML中查找命名元素.最常见的此类属性是FrameworkElement.Name.当特定类型不支持等效的WPF框架级Name属性时,您仍可以使用x:Name.这在某些动画场景中会发生.
因此,您必须使用Key for the Resources
mor on http://msdn.microsoft.com/en-us/library/ms752059.aspx
FrameworkElement 只要该元素包含任何资源,您就可以访问任何资源。如果在您的标记中定义,它必须有x:Key且不能有x:Name.
例如,如果按钮包含资源,则必须从其Resources集合中访问它。
var resource = button.Resources["myKey"];
Run Code Online (Sandbox Code Playgroud)
如果您想从对象、其父对象或应用程序中查找资源,请FindResource()改用。
var resource = this.FindResource("myKey");
Run Code Online (Sandbox Code Playgroud)
我不明白你的困惑。
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |