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

被折叠的 条评论
为什么被折叠?



