zoukankan      html  css  js  c++  java
  • 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 放到下一篇再讲

  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/greenteaone/p/2810288.html
Copyright © 2011-2022 走看看