龙空技术网

24.WPF 样式基础

数字双碳行者 266

前言:

现在姐妹们对“css中id是什么属性”都比较重视,大家都需要剖析一些“css中id是什么属性”的相关文章。那么小编也在网络上收集了一些有关“css中id是什么属性””的相关文章,希望朋友们能喜欢,各位老铁们一起来学习一下吧!

摘要

样式是组织和重用以上的重要工具。不是使用重复的标记填充XAML, 通过Styles创建一系列封装所有这些细节的样式。然后通过Style属性应用封装好的样式。这点类似于CSS样式。

WPF样式也支持触发器(trigger),当属性发生变化时,可通过触发器改变控件的样式,并且可使用模板重新定义控件的内置外观。

正文

给所有某一类标签相同样式

<Window.Resources>    <Style TargetType="{x:Type Label}">        <Setter Property="Margin" Value="10"></Setter>        <Setter Property="FontSize" Value="20"></Setter>    </Style></Window.Resources><StackPanel>    <Label Content="Label1" Background="#54B458"></Label>    <Label Content="Label2" Background="#00BED6"></Label>    <Label Content="Label3" Background="#5479F5"></Label>    <Label Content="Label4" Background="#FF9400"></Label>    <Label Content="Label5" Background="#FF4DA0"></Label></StackPanel>

指定xKey名

<Window.Resources>    <Style TargetType="{x:Type Label}" x:Key="LabelStyle">        <Setter Property="Margin" Value="10"></Setter>        <Setter Property="FontSize" Value="20"></Setter>    </Style></Window.Resources><StackPanel>    <Label Content="Label1" Background="#54B458" Style="{StaticResource LabelStyle}"></Label>    <Label Content="Label1" Background="AliceBlue"></Label></StackPanel>

样式名称(Key):如果不指定Key名称,则默认会全局引用,学过HTML的都知道,这有点类似于HTML中CSS的标签选择器,而你指定Key后,就类似于CSS的id选择器

Setters集合是Style类中最重要的属性,但并非唯一属性。Style类中共有5个重要属性。

<Window.Resources>    <Style x:Key="BackStyle">        <Setter Property="Control.Margin" Value="10"></Setter>        <Setter Property="Control.Foreground" Value="Red"></Setter>        <Setter Property="Control.Background">            <Setter.Value>                <ImageBrush ImageSource="/user.png" TileMode="Tile" Viewport="0 0 32 32" ViewportUnits="Absolute"></ImageBrush>            </Setter.Value>        </Setter>    </Style></Window.Resources><StackPanel>    <Label Content="Label6" Style="{StaticResource BackStyle}"></Label></StackPanel>

关联事件处理程序

属性设置器是所有样式中最常见的要素,但也可以创建为事件关联特定事件处理程序的EventSetter对象的集合。

<Window.Resources>    <Style x:Key="lblStyle">        <Setter Property="Control.Margin" Value="5"></Setter>        <Setter Property="Control.Padding" Value="5"></Setter>        <Setter Property="Control.Foreground" Value="Blue"></Setter>        <EventSetter Event="Control.MouseEnter" Handler="FrameworkElement_MouseEnter"></EventSetter>        <EventSetter Event="Control.MouseLeave" Handler="FrameworkElement_MouseLeave"></EventSetter>    </Style></Window.Resources><StackPanel>    <Label Content="TextBlock1" Style="{StaticResource lblStyle}"></Label>    <Label Content="TextBlock2" Style="{StaticResource lblStyle}"></Label>    <Label Content="TextBlock3" Style="{StaticResource lblStyle}"></Label>    <Label Content="TextBlock4" Style="{StaticResource lblStyle}"></Label>    <Label Content="TextBlock5" Style="{StaticResource lblStyle}"></Label></StackPanel>
private void FrameworkElement_MouseEnter(object sender, MouseEventArgs e){    ((Label)sender).Background = new SolidColorBrush(Colors.Gold);}private void FrameworkElement_MouseLeave(object sender, MouseEventArgs e){    ((Label)sender).Background = new SolidColorBrush(Colors.White);}

继承样式

<Window.Resources>    <Style x:Key="FontStyle">        <Setter Property="Control.FontSize" Value="30"></Setter>    </Style>    <Style x:Key="lblStyle" BasedOn="{StaticResource FontStyle}">        <Setter Property="Control.Margin" Value="5"></Setter>        <Setter Property="Control.Padding" Value="5"></Setter>        <Setter Property="Control.Foreground" Value="Blue"></Setter>        <EventSetter Event="Control.MouseEnter" Handler="FrameworkElement_MouseEnter"></EventSetter>        <EventSetter Event="Control.MouseLeave" Handler="FrameworkElement_MouseLeave"></EventSetter>    </Style></Window.Resources>

使用类型标记扩展来隐式地设置键名

<Window.Resources>    <Style x:Key="{x:Type Button}">        <Setter Property="Button.Margin" Value="5"></Setter>        <Setter Property="Button.Padding" Value="5"></Setter>        <Setter Property="Button.Background">            <Setter.Value>                <LinearGradientBrush>                    <LinearGradientBrush.GradientStops>                        <GradientStop Color="#ff0000" Offset="0"></GradientStop>                        <GradientStop Color="#ffffff" Offset="1"></GradientStop>                    </LinearGradientBrush.GradientStops>                </LinearGradientBrush>            </Setter.Value>        </Setter>    </Style></Window.Resources><StackPanel>    <Button Content="Button1"></Button>    <Button Content="Button2"></Button>    <Button Content="Button3"></Button></StackPanel>

标签: #css中id是什么属性