style用于定义同样属性的控件时使用,对所有控件的属性进行统一管理,方便使用
基础用法:
<Window.Resources>
<Style TargetType="Button" x:Key="button1" >
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Blue"/>
<Setter Property="Content" Value="Button1"/>
</Style>
</Window.Resources>
<StackPanel>
<Button Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}" />
</StackPanel>
进阶用法:通过BasedOn继承祖类
<Window.Resources>
<Style TargetType="Button" x:Key="BaseButton" >
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="Button" x:Key="button1" BasedOn="{StaticResource BaseButton}" >
<Setter Property="Content" Value="Button1"/>
</Style>
</Window.Resources>
<StackPanel>
<Button Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}" />
</StackPanel>
注意:使用这种方法控制控件属性时,也可以在控件内再次调用属性进行定义,但控件自身内的属性优先级最高
<Window.Resources>
<Style TargetType="Button" x:Key="BaseButton" >
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Blue"/>
</Style>
<Style TargetType="Button" x:Key="button1" BasedOn="{StaticResource BaseButton}" >
<Setter Property="Content" Value="Button1"/>
</Style>
</Window.Resources>
<StackPanel>
<Button FontSize="40" Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}"/>
<Button Style="{StaticResource button1}" />
<Button Style="{StaticResource button1}" />
</StackPanel>
效果:
出现错误:未在类型“Window"中找到可附加的属性"Resources". 原因是Window.Resources放在了Grid里面