zoukankan      html  css  js  c++  java
  • wpf 样式继承

    当定义的wpf多个样式,其样式内容(属性、触发器等)有较多的重复时,可以考虑将其抽象成父样式,来提升样式代码的可维护性以及减少代码冗余。

          wpf 进行样式继承时,需要使用style的BasedOn属性。msdn的介绍参见:https://msdn.microsoft.com/en-          us/library/system.windows.style.basedon(v=vs.110).aspx

    下面介绍一个样式继承的简单场景,并附以代码示例。

    • 场景简介。假设系统中要求按钮的字体需全部为黑体,14号,文字色为蓝色。后来项目经理要求在按钮样式的基础上,增加右靠齐的按钮。

    很明显,系统中要存在两种样式的按钮,出去文字靠齐方式之外,其他样式全部相同,用按钮样式的继承来解决这个问题就非常合适了。

    • 1 思路:可以设计3中按钮的样式
      •    ButtonBaseStyle。按钮样式的基类
      •    DefaultButtonStyle。默认的按钮样式。【注】若要运用全局样式,则style不能设置x:Keyshuxing。
      •    ContentPadLefButtonStyle。内容右靠齐的按钮样式。
    • 2 代码
    • 在项目中添加资源字典文件,命名为ButtonAssets.xaml
    • 在资源字典中新建ButtonBaseStyle样式
    1. <Style x:Key="ButtonBaseStyle" TargetType="Button">
              <Setter Property="FontWeight" Value="Bold"></Setter>
              <Setter Property="FontSize" Value="14"></Setter>
              <Setter Property="Foreground" Value="Blue"></Setter>
              <Setter Property="HorizontalContentAlignment" Value="Center"/>
              <Setter Property="VerticalContentAlignment" Value="Center"/>
          </Style>
    • 使用样式继承,新建默认样式
      <Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}"></Style>
    • 使用样式继承,新建右靠齐样式
          <Style x:Key="ContentPadLefButtonStyle" TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
              <Setter Property="HorizontalContentAlignment" Value="Right"/>
          </Style>
    • 在工程的App.xaml中引用资源字典
          <Application.Resources>
              <ResourceDictionary>
                  <ResourceDictionary.MergedDictionaries>
                      <ResourceDictionary Source="/TextBlockBasedOnStyle;component/ButtonAssets.xaml"/>
                  </ResourceDictionary.MergedDictionaries>
              </ResourceDictionary>
          </Application.Resources>
    • 创建不同的按钮,引用样式。默认样式按钮,无需引用默认样式,程序在运行时,会附加DefaultButtonStyle
          <Grid>
              <Grid.ColumnDefinitions>
                  <ColumnDefinition Width="5*"/>
                  <ColumnDefinition Width="5*"/>
              </Grid.ColumnDefinitions>
              <Button Width="100" Content="默认样式" Height="40"></Button>
              <Button Style="{StaticResource ContentPadLefButtonStyle}" Content="右靠齐样式" Width="100" Height="40"   Grid.Column="1"></Button>
          </Grid>
    • 程序执行结果
    • 程序代码:http://files.cnblogs.com/files/TaiYangXiManYouZhe/TextBlockBasedOnStyle.rar
  • 相关阅读:
    【书签】数据可视化(三)- Seaborn简易入门
    【书签】连续型特征的归一化和离散特征的one-hot编码
    【书签】转:对SVM的个人理解---浅显易懂
    【书签】stacking、blending
    【书签】机器学习相关
    正则表达式:匹配单个数字重复n次
    pandas删除DataFrame中任意字段等于'null'字符串的行
    中文的csv文件的编码改成utf-8的方法
    Eslint 从入门到放弃
    图片压缩的网站工具https://tinypng.com/
  • 原文地址:https://www.cnblogs.com/TaiYangXiManYouZhe/p/5125489.html
Copyright © 2011-2022 走看看