wpf基础

在 WPF (Windows Presentation Foundation) 中,Style 是一种强大的资源,允许你定义一组属性值,这些值可以被多个控件实例共享。使用 Style 可以减少重复的 XAML 代码,并且使得 UI 的一致性和可维护性得到提高。

以下是一些 Style 的基本概念和用法:

定义 Style

你可以在 XAML 中的 ResourceDictionary 里定义 Style

<Window.Resources>
    <Style x:Key="ButtonStyle" TargetType="Button">
        <Setter Property="Background" Value="Blue"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="FontSize" Value="16"/>
        <!-- 可以添加更多的 Setter -->
    </Style>
</Window.Resources>

应用 Style

一旦定义了 Style,你可以在控件上通过 Style 属性引用它:

<Button Content="Click Me" Style="{StaticResource ButtonStyle}" />

基于触发器的样式

Style 也可以包含触发器,例如 EventTriggerDataTrigger,来响应事件或数据变化:

<Style x:Key="ButtonStyle" TargetType="Button">
    <Setter Property="Background" Value="Blue"/>
    <Setter Property="Foreground" Value="White"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="DarkBlue"/>
        </Trigger>
    </Style.Triggers>
</Style>

样式继承

你可以基于现有样式创建新样式,并添加或覆盖设置:

<Style x:Key="SpecialButtonStyle" BasedOn="{StaticResource ButtonStyle}" TargetType="Button">
    <Setter Property="Content" Value="Special"/>
    <!-- 可以添加更多的 Setter 或 Triggers -->
</Style>

资源嵌套

Style 可以定义在资源字典中,并在不同的资源字典之间共享:

<ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="SharedStyles.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

动态资源

在 XAML 中,你可以使用动态资源来引用可能在运行时更改的样式:

<Button Content="Click Me" Style="{DynamicResource ButtonStyle}" />

使用动态资源允许样式在不重新编译应用程序的情况下更改。

样式作用域

样式的作用域限制在定义它们的 ResourceDictionary 中,除非你将它们提升到应用程序级别:

<Application.Resources>
    <Style x:Key="GlobalButtonStyle" TargetType="Button">
        <!-- 全局样式定义 -->
    </Style>
</Application.Resources>

样式和模板

样式可以与控件模板结合使用,以提供更复杂的自定义外观:

<Style x:Key="CustomListBoxStyle" TargetType="ListBox">
    <Setter Property="Template">
        <Setter.Value>
            <!-- 定义自定义模板 -->
        </Setter.Value>
    </Setter>
</Style>

样式和绑定

样式可以包含绑定,以响应数据上下文中的变化:

<Style x:Key="DataBoundButtonStyle" TargetType="Button">
    <Setter Property="Content" Value="{Binding ButtonText}"/>
</Style>

使用 Style 可以大大减少 XAML 代码的冗余,并且使得 UI 的定制和维护变得更加容易。通过合理地使用样式,你可以创建一个既一致又灵活的用户界面。

没有用style之前

用了style之后可以修改更加方便

元素的属性值永远是最高的

Setter

Setter 是一个定义在 StyleTemplate 中的元素,用于设置属性的值。Setter 可以用于设置控件的属性值,如背景色、文本颜色、字体大小等,也可以用于绑定数据或触发条件性设置。

Setter中常用的属性
  1. Background

  • 设置控件的背景颜色或背景画刷。

<Setter Property="Background" Value="Blue"/>
  1. Foreground

  • 设置控件的前景色,如文本颜色。

<Setter Property="Foreground" Value="White"/>
  1. FontFamily

  • 设置控件使用的字体族。

<Setter Property="FontFamily" Value="Segoe UI"/>
  1. FontSize

  • 设置控件使用的字体大小。

<Setter Property="FontSize" Value="14"/>
  1. FontStyle

  • 设置控件的字体风格(如斜体)。

<Setter Property="FontStyle" Value="Italic"/>
  1. FontWeight

  • 设置控件的字体粗细。

<Setter Property="FontWeight" Value="Bold"/>
  1. Padding

  • 设置控件内部的填充。

<Setter Property="Padding" Value="10"/>
  1. Margin

  • 设置控件外部的边距。

<Setter Property="Margin" Value="5"/>
  1. BorderThickness

  • 设置控件边框的厚度。

<Setter Property="BorderThickness" Value="2"/>
  1. BorderBrush

- 设置控件边框的颜色。
​
<Setter Property="BorderBrush" Value="Black"/>
  1. Width

- 设置控件的宽度。
​
<Setter Property="Width" Value="100"/>
  1. Height

- 设置控件的高度。
​
<Setter Property="Height" Value="50"/>
  1. HorizontalAlignment

- 设置控件的水平对齐方式。
​
<Setter Property="HorizontalAlignment" Value="Center"/>
  1. VerticalAlignment

- 设置控件的垂直对齐方式。
​
<Setter Property="VerticalAlignment" Value="Center"/>
  1. Visibility

- 设置控件的可见性。
​
<Setter Property="Visibility" Value="Visible"/>
  1. IsEnabled

- 设置控件是否启用。
​
<Setter Property="IsEnabled" Value="True"/>
  1. Content

- 设置控件的内容。
​
<Setter Property="Content" Value="Hello World"/>
  1. ToolTip

- 设置控件的鼠标悬停提示。
​
<Setter Property="ToolTip" Value="This is a tooltip"/>

  • 44
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值