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 放到下一篇再讲

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值