WPF-06 样式(Style)

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF-06 样式(Style)相关的知识,希望对你有一定的参考价值。

在我们前面介绍资源的时候,我们提到了样式表,如果你之前是做Web开发的,你会发现Style有点类似于Web中的CSS。

控件级别样式

我们可以在控件级别定义自己的样式,控件级别的样式是优先级最高的

<Window x:Class="Example_06.SelfControlStyle"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Example_06"
        mc:Ignorable="d" Title="SelfControlStyle" Height="450" Width="800">
    <Grid>
        <TextBlock Text="TextBlock">
            <TextBlock.Style>
                <Style>
                    <Setter Property="TextBlock.Foreground" Value="Red"></Setter>
                    <Setter Property="TextBlock.FontSize" Value="100"></Setter>
                </Style>
            </TextBlock.Style>
        </TextBlock>
    </Grid>
</Window>

我们为控件定义了自己的样式

父级控件级别样式

<Window x:Class="Example_06.ParentControlStyle"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d" Title="MainWindow" Height="450" Width="800">
    <StackPanel>
        <StackPanel.Resources>
            <Style TargetType="Button">
                <Setter Property="Background" Value="Green"></Setter>
                <Setter Property="Foreground" Value="White"></Setter>
                <Setter Property="FontSize"  Value="40"></Setter>
            </Style>
        </StackPanel.Resources>
        <Button>Button 1</Button>
        <Button>Button 2</Button>
        <Button Background="red">Button 3</Button>
    </StackPanel>
</Window>

上面例子中我们在StackPanel中定义了样式,会应用容器里面所有Button,当然你也可以在Button级别覆盖父控件的样式

Window窗体级别样式

<Window x:Class="Example_06.WindowControlStyle"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Example_06"
        mc:Ignorable="d" Title="WindowControlStyle" Height="450" Width="800">
    <Window.Resources>
        <Style TargetType="Button">
            <Setter Property="Background" Value="Green"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
            <Setter Property="FontSize"  Value="30"></Setter>
         </Style>
    </Window.Resources>
    <StackPanel>
        <Button>Button 1</Button>
        <Button>Button 2</Button>
        <Button Background="red">Button 3</Button>
    </StackPanel>
</Window>

我们将样式移到Window窗体级别,会将样式应用到该窗体的所有Button

应用程序级别样式

<Application x:Class="Example_06.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Example_06"
             StartupUri="ParentControlStyle.xaml">
    <Application.Resources>
        <Style TargetType="Button">
            <Setter Property="Background" Value="Green"></Setter>
            <Setter Property="Foreground" Value="White"></Setter>
            <Setter Property="FontSize"  Value="20"></Setter>
        </Style>
    </Application.Resources>
</Application>

我们可以将样式定义为应用程序级别样式,样式表的优先级子节点样式可以覆盖父节点的样式,从下往上查找

以上是关于WPF-06 样式(Style)的主要内容,如果未能解决你的问题,请参考以下文章

Vue 设置style样式

前端学习(48)~通过style对象获取和设置行内样式

如何修改element.style内联样式;

如何修改element.style内联样式;

vue学习 使用内联样式设置style样式

样式(Style)和触发器