WPF样式和资源2

<Window.Resources>
  <FontFamily x:key="ButtonFontFamily">Time New Roman</FontFamily>
  <sys:Double x:key="ButtonFontSize">18</s:Double>
  <FontWeight x:key="ButtonFontWeight">Bold</FontWeight>
</Window.Resources>

1:资源里定义了三个资源,分别设置对象属性
接下来应用资源:

<Button FontFamily="{StaticResource ButtonFontFamily}"
FontWeight=="{StaticResource ButtonFontWeight}"
FontSize=="{StaticResource ButtonFontSize}"
</Button>

2:另一种方式:(WPF中的一个元素都可以使用一个样式,只能使用一个样式

创建一个独立的资源:

 

<Window.Resources>
  <Style x:key="BigFontButtonStyle">
    <setter Property="control.FontFamily" Value="Tinmes New     Roman"/>
    <Setter Property="control.FontSize" Value="18"/>
    <Setter Property="control.FontWeight" Value="Bold"/>
  </Style>
</Window.Resources>

应用这个独立的样式资源

<Button Sytle="{StaticResource BigFontButtonStyle}">a Customized</Button>

 

Style类的属性:
Setters:设置属性值并自动关联事件处理程序的Sette对象或EventSetter对象的集合

Triggers:能够自动改变样式设置的对象集合

Resources

BasedOn:通过该属性可以创建继承其他样式设置的更复杂样式

TargetType:该属性表示应用样式的元素的类型

 

3:关联的事件处理程序

<Style x:key="MouseOverHighLightStyle">
  <EventSetter Event="TextBlock.MouseEnter" Handler="element_MouseEnter"/>
  <EventSetter Event=="TextBlock.MouseLeave" Handler="element_MouseLeave"/>
  <Setter Property=TextBlock.Padding" Value="5"/>
</Style>
private void element_MouseEnter(object sender,MouseEventArgs e)
{

  ((TextBlock)Senter.Background=new SolidColorBrush(Colors.LightGoldenrodYellow);

}

事件element_MouseLeave同样的道理

接下来应用给样式;

<Textklock Style="{StaticResouce MouseOverHightStyle}"> Hover Over me</Textklock >

4:简单触发器

<Style x:key="BigFontButton">
  <Style.Setters>
    <Setter Property="Control.FontFamily" Value="Time NEw Roman"/>
    <Setter Property="Control.FontSize" Value="18"/>
  </Style.Setters>
   
  <Style.Triggers>
    <Triggers Property="Control.IsFocused" Value="True">
    <Setter Property="Control.Foreground" Value="darkRed"/>
  </Style.Triggers>
</Style>
也可以定义多个触发器

5:比较复杂的,这里用到了”行为“:

<Style x:Key="OuterGlowStyle" TargetType="{x:Type FrameworkElement}">
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect BlurRadius="10" Color="Black" Direction="0" Opacity="0.6"
 RenderingBias="Performance" ShadowDepth="0"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Effect">
                        <Setter.Value>
                            <DropShadowEffect BlurRadius="10" Color="Black" Direction="0" Opacity="0.6"
 RenderingBias="Performance" ShadowDepth="0"/>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>

 

6:RelativeSource相对路径

    StaticSource绝对路径

    ElementSource通常绑定某个控件的Value

 

7. BaseOn 继承使用案例

<Window.Resources>
        <Style x:Key="Button1Style" TargetType="Button">
            <Setter Property="Width" Value="100"/>
            <Setter Property="Height" Value="50"/>
            <Setter Property="Background" Value="Blue"/>
        </Style>
        <Style x:Key="Button2Style" TargetType="Button" BasedOn="{StaticResource Button1Style }">
            <Setter Property="Background" Value="Red"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="FontSize" Value="20"/>
        </Style>
    </Window.Resources>

 8. Button 的鼠标滑过样式

  <Window.Resources>
      <Style x:Key="back" TargetType="Button" >
          <Style.Resources>
             
          </Style.Resources>
          <Style.Setters>
              <Setter Property="Background" Value="Blue"></Setter>
              <Setter Property="Foreground" Value="White"></Setter>

              <!--Button鼠标滑过样式-->
              <Setter Property="Template">
                  <Setter.Value>
                      <ControlTemplate TargetType="{x:Type Button}">
                          <Border Background="{TemplateBinding Background}" 
                                  BorderBrush="{TemplateBinding BorderBrush}" 
                                  BorderThickness="{TemplateBinding BorderThickness}">
                              <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                          </Border>
                      </ControlTemplate>
                  </Setter.Value>
              </Setter>
          </Style.Setters>
          
          <Style.Triggers>
              <Trigger Property="IsFocused" Value="True">
                  <Setter Property="Background" Value="Red"></Setter>
                  <Setter Property="FontSize" Value="30"></Setter>
              </Trigger>
              
              <Trigger Property="IsMouseOver" Value="True">
                  <Setter Property="Background" Value="Red" ></Setter>
              </Trigger>
          </Style.Triggers>
      </Style>
  </Window.Resources>


<Button Content="测试1" Height="50" Style="{StaticResource ResourceKey=back}" ></Button>

 

 

更多:

WPF-资源

WPF样式和资源2

WPF资源字典使用

posted @ 2014-05-08 15:00  天马3798  阅读(276)  评论(0)    收藏  举报