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