Style DP的优先级

本文详细解析了DependencyProperty的取值优先级规则,包括从公共枚举基值源开始,直至局部设置的优先级排序。通过示例展示了如何在不同层级(如窗口资源、样式、触发器等)中设置属性值,并解释了优先级如何决定实际应用的属性值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Dependency Property取值条件的优先级是(从上到下优先级从低到高):
   1: public enum BaseValueSource
   2: {
   3:     Unknown,
   4:     Default,
   5:     Inherited,
   6:     DefaultStyle,
   7:     DefaultStyleTrigger,
   8:     Style,
   9:     TemplateTrigger,
  10:     StyleTrigger,
  11:     ImplicitStyleReference,
  12:     ParentTemplate,
  13:     ParentTemplateTrigger,
  14:     Local
  15: }

 

   1: <Window>
   2:     <Window.Resources>
   3:         <Style TargetType="{x:Type Button}" x:Key="ButtonStyle">
   4:             <Setter Property="Width" Value="60"/>
   5:             <Style.Triggers>
   6:                 <Trigger Property="IsMouseOver" Value="True">
   7:                     <Setter Property="Width" Value="80"/>
   8:                 </Trigger>
   9:             </Style.Triggers>
  10:         </Style>
  11:     </Window.Resources>
  12:     <Grid>
  13:         <Button x:Name="button1" Style="{StaticResource ButtonStyle}" Background="{DynamicResource brush}" Width="20"/>
  14:     </Grid>
  15: </Window>

 第4行用Style的Setter设置Width=60,这个优先级是Style;第6行当IsMouseOver为True时设置Width=80,这个优先级是StyleTrigger;第13行使用Style的Button定义Width=20,这个优先级是Local。Local具有最高的优先级,所以即使鼠标移到Button上,第6行的Trigger也会因为优先级不够高而不起作用。如果去掉了第13行中的Width=20,那么鼠标移到Button上时Width会变为80,鼠标移开后会回到第4行的设置的60来。

 

摘自:http://www.cnblogs.com/Zhouyongh/archive/2011/08/01/2123610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值