.NET|--WPF|--笔记合集|--依赖项属性|--4.依赖项属性值优先级
前言
为什么存在依赖属性优先级?
依赖项属性优先级
官方文档
下面列出了在将运行时值分配给依赖属性时,属性系统所使用的最终优先级顺序。 最高优先级最先列出。
1. 属性系统强制。
有关强制转换的详细信息,请参阅强制转换和动画。
2. 活动动画或具有 Hold 行为的动画。
若要拥有实用效果,动画必须拥有比基值(无动画)更高的优先级,即使基值进行了本地设置也是如此。 有关详细信息,请参阅强制转换和动画。
3. 本地值。
可以通过“包装器”属性设置本地值,这相当于在 XAML 中设置特性或属性元素,或者使用特定实例的属性调用 SetValue API。 通过绑定或资源设置的本地值会具有与直接设置的值相同的优先级。
4. TemplatedParent 模板属性值。
如果元素是通过模板创建(ControlTemplate 或 DataTemplate)创建的,则具有 TemplatedParent。 有关详细信息,请参阅 TemplatedParent。 在通过 TemplatedParent
指定的模板中,优先级顺序为:
-
触发器。
-
属性集(通常通过 XAML 特性进行设置)。
5. 隐式样式。
仅应用于 Style 属性。 Style
值是具有与元素类型匹配的 TargetType 值的任何样式资源。 样式资源必须存在于页面或应用程序中。 对隐式样式资源的查找不会扩展到主题中的样式资源。
6. 样式触发器。
样式触发器是显式或隐式样式中的触发器。 样式必须存在于页面或应用程序中。 默认样式中的触发器的优先级较低。
7. 模板触发器。
模板触发器是直接应用的模板或样式中的模板中的触发器。 样式必须存在于页面或应用程序中。
8. 样式资源库值。
样式资源库值是样式中通过 Setter 应用的值。 样式必须存在于页面或应用程序中。
9. 默认样式,也称为主题样式。
有关详细信息,请参阅默认(主题)样式。 在默认样式中,优先级顺序如下:
-
活动触发器。
-
资源库。
10. 继承。
子元素的某些依赖属性从父元素继承其值。 因此,可能不需要在整个应用程序中对每个元素设置属性值。 有关详细信息,请参阅属性值继承。
11. 依赖属性元数据中的默认值。
依赖属性可以在该属性的属性系统注册期间设置默认值。
继承依赖属性的派生类可以选择按照类型重写依赖属性元数据(包括默认值)。
有关详细信息,请参阅依赖属性元数据。
对于继承的属性,父元素的默认值优先于子元素的默认值。
因此,如果未设置可继承属性,则会使用根或父级的默认值,而不是子元素的默认值。
<<WPF编程宝典>>
(1)默认值
(由 FrameworkPropertyMetadata 对象设置的值)。
(2)继承而来的值
(假设设置了 FrameworkPropertyMetadata.Inherits 标志,并为包含层次中的某个元素提供了值)。
(3)来自主题样式的值
(将在第18 章讨论)。
(4)来自项目样式的值
(将在第 11 章讨论)。
(5)本地值
(使用代码或XAMI 直接为对象设置的值)。
如上面的列表所示,可通过直接应用一个值来覆盖整个层次。
如果不这么做,属性值可由上面列表中的下一个可用项确定。
示例.属性系统强制 和 元数据默认值 和 本地值
源码解析--
System.Windows.DependencyObject
System.Windows.Controls.UIElementCollection
插曲--发现巨硬中文官方文档上一个错别字
巨硬中文文档上写错字了,
"回调"写成"回叫"了...哈哈...
小细节--发现问题,就多打印一些细节...
结尾
__EOF__

本文链接:https://www.cnblogs.com/love-zf/p/18389974.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库