WPF学习笔记6: 依赖属性设置优先级

 本文主要摘录于MSDN内容


优先级按从高到低排序:

  1. 属性系统强制转换。强制转换和动画在本 SDK 中都作用于称为基值的值。便于动画不受别的设置影响。
  2. 活动动画或具有 Hold 行为的动画。为了获得任何实用效果,属性的动画必须优先于基(未动画)值,即使该值是在本地设置的情况下也将如此。
  3. 本地值本地值可以通过包装属性 (Property) 的便利性进行设置,这也相当于在 XAML 中设置 Attribute Property 元素,或者使用特定实例的属性调用 SetValue API。如果您使用绑定或资源来设置本地值,则每个值都按照直接设置值的优先级顺序来应用。
  4. TemplatedParent 模板属性。如果元素是作为模板(ControlTemplate DataTemplate)的一部分创建的,则具有 TemplatedParent。在模板中,按以下优先级顺序应用:
    1. 来自 TemplatedParent 模板的触发器。
    2. TemplatedParent 模板中的属性 (Property) 集。(通常通过 XAML 属性 (Attribute) 进行设置。)
  5. 隐式样式。仅应用于Style属性。Style属性是由任何样式资源通过与其类型匹配的键来填充的。该样式资源必须存在于页面或应用程序中;查找隐式样式资源不会进入到主题中。
  6. 样式触发器。来自页面或应用程序上的样式中的触发器。(这些样式可以是显式或隐式样式,但不是来自优先级较低的默认样式。)
  7. 模板触发器。来自样式中的模板或者直接应用的模板的任何触发器。
  8. 样式 Setter来自页面或应用程序的样式中的 Setter 的值。
  9. 默认(主题)样式。在默认样式中,按以下优先级顺序应用:
    1. 主题样式中的活动触发器。
    2. 主题样式中的 Setter
  10. 继承。有几个依赖项属性从父元素向子元素继承值,因此不需要在应用程序中的每个元素上专门设置这些属性。
  11. 来自依赖项属性元数据的默认值。任何给定的依赖项属性都具有一个默认值,它由该特定属性的属性系统注册来确定。而且,继承依赖项属性的派生类具有按照类型重写该元数据(包括默认值)的选项。因为继承是在默认值之前检查的,所以对于继承的属性,父元素的默认值优先于子元素。因此,如果任何地方都没有设置可继承的属性,将使用在根元素或父元素中指定的默认值,而不是子元素的默认值。
posted @ 2008-03-11 15:09  Alen在西安  阅读(1662)  评论(0编辑  收藏  举报