就近原則
1、“行內(nèi)”覆蓋“嵌入”,“嵌入”覆蓋“外部”
Style.xml
<Window.Resources>
<Grid.Resources>
….中間層
<Button.Resources>
</Button.Resources>
</Grid.Resources>
</Window.Resources>
舉例
下例中,Button顯示Coral的顏色,如果去掉Coral,則顯示Chartreuse,去掉行內(nèi)和嵌入,才顯示Aqua
Coral>Chartreuse>Aqua
<Grid>
<Grid.Resources>
<!--外部-->
<Style TargetType="Button">
<Setter Property="Background" Value="Aqua"></Setter>
</Style>
</Grid.Resources>
<!--行內(nèi)-->
<Button Background="Coral">
<Button.Resources>
<!--嵌入-->
<Style TargetType="Button">
<Setter Property="Background" Value="Chartreuse"></Setter>
</Style>
</Button.Resources>
</Button>
</Grid>
給外部資源命名,并在行內(nèi)引用,則此時外部->行內(nèi)
Coral>Aqua>Chartreuse
<Grid>
<Grid.Resources>
<!--外部以行內(nèi)的形式存在-->
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="Background" Value="Aqua"></Setter>
</Style>
</Grid.Resources>
<!--行內(nèi)-->
<Button Background="Coral" Style="{StaticResource ButtonStyle}">
<Button.Resources>
<!--嵌入-->
<Style TargetType="Button">
<Setter Property="Background" Value="Chartreuse"></Setter>
</Style>
</Button.Resources>
</Button>
</Grid>
2、同級別遵循“就近”
引用原則
如果沒有給Style命名,則默認(rèn)所有該范圍下的目標(biāo)控件都使用該Style
如果一個控件有多個Style,則根據(jù)就近原則來判定用什么Style
如果Style有命名(x:Key),則需要在控件中引用Style(eg.Style="{StaticResource ButtonStyle}")才會使用該Style
同一控件只能設(shè)置一次Resources
1
示例代碼
https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/Style 的StyleDemo和StyleDemo2