首页 > 其他分享 >wpf基础

wpf基础

时间:2024-08-01 23:25:35浏览次数:16  
标签:控件 Style 定义 样式 可以 基础 设置 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"/>

标签:控件,Style,定义,样式,可以,基础,设置,wpf
From: https://blog.csdn.net/weixin_64532720/article/details/140779361

相关文章

  • Amazon SQS 入门:从基础到进阶的完整指南
    这是对AmazonSimpleQueueService(AmazonSQS)的历史年表的介绍。AmazonSQS作为AWS的基础设施服务之一,于2004年11月首次推出,提供全托管的消息排队服务。为了迎接即将到来的2024年11月的20周年,我们提前撰写了这篇文章,以纪念这一里程碑。文章总结了SQS从诞生至今的主要功能和......
  • spring集成elasticsearch并实现基础功能
    什么是elasticsearch?Elasticsearch是一个基于Lucene的开源搜索引擎和分析引擎,它为结构化和非结构化的海量数据提供了实时的搜索、分析和可视化功能。Elasticsearch是ElasticStack(也称为ELKStack)的核心组件之一,其他组件还包括Kibana(用于数据可视化)、Logstash(用于数据......
  • Animate软件基础:“分散到图层”创建的新图层
    FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084FlashASer:实用的各种AdobeAnimate软件教程https://zhuanlan.zhihu.com/p/675680471FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436FlashASer:Animate2022零......
  • Animate软件基础:在时间轴中添加或插入帧
    FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084FlashASer:实用的各种AdobeAnimate软件教程https://zhuanlan.zhihu.com/p/675680471FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436FlashASer:Animate2022零......
  • Linux基础命令指南七(守护进程与网络服务)
    守护进程是在执行各种任务的后台等待或运行的进程。一般情况下,守护进程在系统引导时自动启动并持续到关机或者手动将它停止。按照惯例,守护进程名称以d结尾。 在红帽Linux中,系统第一个启动的进程是systemd守护进程,它会通过使用单元(用于定义系统知道如何管理的对象)来管理不同......
  • java基础6—抽象类、接口、枚举
    1.抽象类1.1简介        由于继承这个显著特点,我们可以将子类设计的更加具体,而父类更加一般化,通用化。父类可以封装不同子类的共同特征或者共同行为。而有的时候,父类中封装的方法无法具体完成子类中需要的逻辑,因此我们可以将此方法设计成抽象方法,即使用关键字abstra......
  • C++入门基础
    文章目录一、C++的由来1、C++的起源2、C++的版本更新二、C++的第一个程序三、命名空间1、namespace的价值2、namespace的定义3、命名空间的使用四、C++输⼊&输出五、缺省参数六、函数重载七、引用1、引用的概念和定义一、C++的由来1、C++的起源C++的起源可......
  • Java基础知识分享(二)相关练习题
    写在前面大家前面的方法和数组学的怎么样了,快来看看这些题你能不能快速地说出答案,数组和方法在Java学习中还是非常重要的,快来检测你的薄弱点在哪,及时查漏补缺!填空题1.数组会在内存中开辟一块连续固定大小的空间,每个空间相当于之前的一个变量,称为数组的元素。数组的长度一经确定......
  • 数据库教程:从基础操作到高级应用
    数据库教程:从基础操作到高级应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!数据库是现代软件开发的核心组成部分之一。掌握数据库的基础操作以及高级应用技术对于开发人员而言至关重要。本文将从基础操作开始,逐步深入到数据库的高级应用,包括SQL语句......
  • Java多线程编程详解:从基础到高级
    Java多线程编程详解:从基础到高级大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!Java的多线程编程允许程序同时执行多个任务,提高了应用的性能和响应能力。本文将从基础到高级,全面介绍Java中的多线程编程,包括线程的创建、线程池、同步机制及并发工具的使用......