• WPF 样式(Style)(2)


         我的WPF很弱,很多时候写的是一塌糊涂的,在这里感谢nonocastTommyJoans给予的帮助。谢谢你们在工作中给予的指导和帮助,让我少走很多弯路。

         已经很久不用WPF编程了,正好最近的项目要用到它,所以要把遗忘的WPF重新学习一下了。翻出之前写的blog,WPF样式(style),写的很简单,就把之前写的那篇叫WPF样式(style)(1)啦,现在这篇为WPF样式(style)(2)吧。

        Style是属性设置的集合。可以给同一种类的不同实例设置相同的Style。前提是这个类必须是派生自 FrameworkElement 或 FrameworkContentElement 。

        Style通常在 Resources 节内部声明为资源。

           1. Style的有效范围

            1.1 如果在Application.Resources中声明Style,则它的有效范围是整个程序              

      View Code
    <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Themes/Style.xaml" />
                    <ResourceDictionary Source="Themes/Generic.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>

            1.2 如果在Window.Resources中声明Style,则它的有效范围是当前窗体

      View Code
    <Window.Resources>
                <Style TargetType="Button">
                    <Setter Property="Width" Value="75"></Setter>
                    <Setter Property="Height" Value="85"></Setter>
                    <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
                </Style>
      </Window.Resources>

            1.3 如果在其他控件(例如Grid)的Resources中声明Style,则它的有效范围就是这个控件    

      View Code
    <Grid.Resources>
                <Style TargetType="Button">
                    <Setter Property="Width" Value="75"></Setter>
                    <Setter Property="Height" Value="85"></Setter>
                    <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
                </Style>
      </Grid.Resources>

       注:

    Style中如果只写了TargetType="Button",没有写x:Key,则Style有效范围内的Button的Style默认都是这个Style。
    Style中如果写x:Key=“buttonStyle1”了,则引用此Style的方法为Style="{StaticResource buttonStyle1}" 

     2. Style可以用BaseOn来“继承”另一个Style   

      View Code
      <Window.Resources>
      <Style TargetType="Button"  x:Key="buttonstyle1">
                    <Setter Property="Height" Value="60"></Setter>
                    <Setter Property="Width" Value="60"></Setter>
         </Style>
    <Style TargetType="Button" BasedOn="{StaticResource ResourceKey=buttonstyle1}"/>
    </Window.Resources>

     3.  TargetType

         如果没有给Style指定TargetType,则在写Style时,必须给每个属性添加类型,这样不同的类型可以共用同一个Style:    

    View Code
    <Style x:Key="Style1">
                <Setter Property="Button.Width" Value="80"></Setter>
                <Setter Property="Button.Height" Value="80"></Setter>
                <Setter Property="TextBlock.Text" Value="HelloWorld"></Setter>            
            </Style>

      注:将Style1同时指定给Button和TextBlock,Button会自动忽略不适用它们的属性Text。而二者公有的属性Height,Width,对二者都有效。

     4. C# 代码中引用Style

        tblock.Style = (Style)FindResource("Style1");

     5. 可以在Style中绑定事件,例如:

          <Style TargetType="Button">
                    <EventSetter Event="Click" Handler="Button_Click"></EventSetter>
          </Style>

     6. Triggers 放到下一篇再讲

  • 相关阅读:
    skynet debug console 使用
    在linux上定时修改root密码,以邮件形式发送给使用者
    在linux nginx服务器上,给内网ip配置https
    在linux apache服务器上,给内网ip配置https
    redis集群配置
    记一次删除k8s namespace无法删除的问题
    向docker镜像中传递变量的两种方式
    用kubeadm简单部署k8s
    第十六天python3 文件IO(二)
    第十五天python3 文件IO(一)
  • 原文地址:https://www.cnblogs.com/greenteaone/p/2810288.html
Copyright © 2020-2023  润新知