style原则问题

就近原则

1、“行内”覆盖“嵌入”,“嵌入”覆盖“外部”
Style.xml

<Window.Resources>   
    <Grid.Resources>   
….中间层
        <Button.Resources> </Button.Resources> </Grid.Resources> </Window.Resources> 
举例

下例中,Button显示Coral的颜色,如果去掉Coral,则显示Chartreuse,去掉行内和嵌入,才显示Aqua
Coral>Chartreuse>Aqua

<Grid>
    <Grid.Resources>
        <!--外部--> <Style TargetType="Button"> <Setter Property="Background" Value="Aqua"></Setter> </Style> </Grid.Resources> <!--行内--> <Button Background="Coral"> <Button.Resources> <!--嵌入--> <Style TargetType="Button"> <Setter Property="Background" Value="Chartreuse"></Setter> </Style> </Button.Resources> </Button> </Grid> 

给外部资源命名,并在行内引用,则此时外部->行内
Coral>Aqua>Chartreuse

<Grid>
    <Grid.Resources>
        <!--外部以行内的形式存在--> <Style TargetType="Button" x:Key="ButtonStyle"> <Setter Property="Background" Value="Aqua"></Setter> </Style> </Grid.Resources> <!--行内--> <Button Background="Coral" Style="{StaticResource ButtonStyle}"> <Button.Resources> <!--嵌入--> <Style TargetType="Button"> <Setter Property="Background" Value="Chartreuse"></Setter> </Style> </Button.Resources> </Button> </Grid> 

2、同级别遵循“就近”

引用原则

如果没有给Style命名,则默认所有该范围下的目标控件都使用该Style
如果一个控件有多个Style,则根据就近原则来判定用什么Style
如果Style有命名(x:Key),则需要在控件中引用Style(eg.Style="{StaticResource ButtonStyle}")才会使用该Style

同一控件只能设置一次Resources
 
示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/Style 的StyleDemo和StyleDemo2

转载于:https://www.cnblogs.com/Lulus/p/8157360.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值