首页 > 其他分享 >【WPF学习】02

【WPF学习】02

时间:2023-04-21 10:22:45浏览次数:35  
标签:02 控件 Style 样式 标签 Button 学习 设置 WPF

基于Window.Resource下的Style标签进行通用样式设置

下面是一个WPF窗口中一段表示三个完全相同的Button控件元素的代码实例:

<Grid>
  <StackPanel>
    <Button Content="Button1" FontSize="18" Foreground="Black" Background="Aqua"/>
    <Button Content="Button1" FontSize="18" Foreground="Black" Background="Aqua"/>
    <Button Content="Button1" FontSize="18" Foreground="Black" Background="Aqua"/>
  </StackPanel>
</Grid>

其中参数分别控制:

Content 内容文本

FontSize 字号

Foreground 字体颜色

按照上面的方式,在需要保持这一组Buttton控件格式一致的前提下,如何才能避免当前把每一个成员都修改一遍的繁琐操作呢?——使用Window.Resources下的Style设置标准样式进行样式修改

首先通过Style的TargetType设置该Style控制的控件对象(不设置具体空间控制对象则默认Style为全局样式),

再通过Setter的Property设置具体属性

<Window.Resources>
  <Style TargetType="Button">
    <Setter Property="Content" Value="Button"/>
    <Setter Property="Background" Value="Aqua"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Foreground" Value="Black"/>
  </Style>
</Window.Resources>

这样一来,修改前面格式完全一致的Button组直接在Style这里修改对应属性即可

但这样存在一个问题,上面的只能满足窗口内所有Button都完全一致的情境,但实际应用中Button在通用样式下肯定会有一些细节差异,如果只按照上面的方法仍然无法解决最初的问题在实际应用中的存在

可以通过Style的x:Key参数为Style设置独立标签,目标控件如需调用该样式则在控件中添加该Style的标签

<Window.Resources>
  <Style x:Key="ButtonStyle1" TargetType="Button">
    <Setter Property="Content" Value="Button"/>
    <Setter Property="Background" Value="Aqua"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Foreground" Value="Black"/>
  </Style>
</Window.Resources>

<Grid>
  <StackPanel>
    <Button Style="{StaticResource ButtonStyle1}"/>
    <Button Style="{StaticResource ButtonStyle1}"/>
    <Button Style="{StaticResource ButtonStyle1}"/>
  </StackPanel>
</Grid>

那么如果我们首先设置了一个最通用的样式NormalStyle1,然后我们希望能在保留它的同时再设置一个细化一点通用样式的NewStyle1,

通过Style标签的BaseOn属性可以实现Style间的继承

<Window.Resources>
  <Style x:Key="ButtonNormalStyle1" TargetType="Button">
    <Setter Property="Background" Value="Aqua"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Foreground" Value="Black"/>
  </Style>
  <Style x:Key="ButtonNewStyle1" TargetType="Button" BasedOn="{StaticResource ButtonNormalStyle1}">
    <Setter Property="Content" Value="Button"/>
  </Style>
</Window.Resources>

通过上述方法,在实际使用时,在每个Button控件标签里需要我们独立设置的往往就只有一个Content属性(Button的文本内容)和一个Style即可(当然如果有什么其他和通用Style不同的再另做设置即可)

<Grid>
  <StackPanel>
    <Button Content="Button1" Style="{StaticResource ButtonNewStyle1}"/>
    <Button Content="Button2" Style="{StaticResource ButtonNewStyle1}"/>
    <Button Content="Button3" Style="{StaticResource ButtonNewStyle1}"/>
  </StackPanel>
</Grid>

标签:02,控件,Style,样式,标签,Button,学习,设置,WPF
From: https://www.cnblogs.com/90Red/p/17339182.html

相关文章

  • 零数科技入选“2022数字中国TOP100”
    4月17日,德本咨询、eNET研究院和互联网周刊联合发布了“2022数字中国TOP100”名单,零数科技凭借在区块链领域的技术创新和优秀的商业落地成果,成功入选“2022数字中国TOP100”。2月27日,中共中央、国务院印发了《数字中国建设整体布局规划》(以下简称《规划》),《规划》指出要夯实数字中国......
  • WPF 给类库设置设计时使用的资源字典
    在开发多语言版本时,我将界面显示的文本保存在语言资源zh.xaml和en.xaml中,但程序启动,加载语言资源时是外部的配置文件决定的,因此语言资源我无法添加在App.xaml文件中,而开发单个XAML界面时,设计器将会因为找不到资源文件的存在,而拿不到资源,每次遇到语言相关的资源键值,都需要手动去......
  • 【WPF学习】01
    布局基础.1根据格网划分行列--Grid,Grid.RowDefinition,Grid.ColumnDefinition格网<Grid></Grid>多行<Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinition>多列<Grid.ColumnDefinitions><ColumnDefini......
  • ABB工业控制器 UNITROL 1020 3BHE030579R0003 UNS0119A-Z,V1 3BHE030579R0001
    W;1  ⑧0③0①⑦77⑤  9ABBUNITROL10203BHE030579R0003 UNS0119A-Z,V13BHE030579R0001 DDC779BE023BHE006805R0002 XO08R21SBP260109R1001 PM866K013BSE050198R1 CI858K013BSE018135R1 PU515A3BSE032401R1 励磁控制系统的主要任务是向发电机......
  • 2023年4月21日-关于远程feign调用实现文件上传下载
    一、客户需求:做一个查询程序,客户提供一个excel模板,将查询结果保存到excel模板中,上传到文件服务,供客户下载使用。二、代码实现//服务A,文件上传@ApiOperation("上传文件-demo")@PostMapping(value="/uploadDemo/{busType}/{billId}")publicResBeanuploadFile(@PathVariabl......
  • C#多线程学习(三) 生产者和消费者
    C#多线程学习(三)生产者和消费者线程学习第一篇:C#多线程学习(一)多线程的相关概念线程学习第二篇:C#多线程学习(二)如何操纵一个线程前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数......
  • 2023年4月21日08:29:28
    昨天学了一天怎么去写博客,进度什么的比较慢,但是我的收获很大,看懂了很多以前没有看懂的东西,很高兴。今天先把材料写好,然后再开始学习博客,争取在星期天的的00:00之前把博客写完。学博客的时候,要去理解,自己不要沉溺在刷课的快感中,你要真正学到 东西才是最重要的。理解它们跑的逻辑......
  • Prufer 序列学习笔记
    一、前言感觉它本身没有什么用。主要是用于计数问题。前置知识:树的定义。二、定义对于一棵有\(n\)个节点的无根树\(T\),定义其Prufer序列为执行以下操作\(n-2\)次所形成的长度为\(n-2\)的正整数序列。·选择其编号最小的度数为\(1\)的节点,输出唯一与其相邻的节点的......
  • 团队项目冲刺02
    信息详情这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/2023softwareengine这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/2023softwareengine/homework/12920这个作业的目标项目冲刺目录目录目录一、会议1.昨天已完成的工作2.今天......
  • 学习请一定要快乐
    学习请一定要快乐学习请一定要快乐,当我们感到快乐时,我们的大脑会释放多巴胺等神经递质,这些神经递质有助于提高注意力、记忆力和学习效率。因此,当我们感到快乐时,我们更容易专注于学习并且更容易记住所学的知识。快乐可以降低压力和焦虑水平,这有助于促进学习。当我们感到紧张或焦......