WPF学习 第十一章1 样式

来源:互联网 发布:钢铁力量 半人马 数据 编辑:程序博客网 时间:2024/06/05 16:52

1.样式:

样式(Style)是组织和重用格式化选项的重要工具。样式封装了一系列属性设置细节。

尽管可以使用资源存储各种对象,但是使用资源最常见的原因之一是通过它们保存样式。

1.1 简单的样式例子


本例中,在资源中定义一个按钮文本字体样式,然后Button1使用该样式。

样式的定义:

<Window.Resources>

       <Style x:Key="BigFontStyle">

           <Style.Setters>

                <SetterProperty="Control.FontFamily" Value="Times NewRoman"></Setter>

                <SetterProperty="Control.FontSize" Value="30"></Setter>

                <Setter Property="Control.FontWeight"Value="Bold"></Setter>

                <SetterProperty="Control.Background">

                    <Setter.Value>

                        <ImageBrushImageSource="C:\\Image1.bmp"></ImageBrush>

                    </Setter.Value>

               </Setter>

           </Style.Setters>

       </Style>

</Window.Resources>

样式的使用1:

   <StackPanel>

       <Button Name="button1" Content="Button1"Style="{StaticResource BigFontStyle}"></Button>

<Button Name="button2" Content="Button2"></Button>

</StackPanel>

样式的使用2(C#代码实现):

this.button1.Style= (Style)TryFindResource("BigFontStyle");

表1.1 Style类的属性

属性

说明

Setters

包含Setter和EventSetter对象集合

Triggers

当属性改变时触发修改样式

Resources

希望用于样式的资源集合

BasedOn

可创建继承样式

TargetType

标识该样式应用到的元素类型

 

1.2属性设置器(Setters的Setter)

写法1:

<Window.Resources>

       <Style x:Key="BigFontStyleButton">

           <Style.Setters>

                <Setter Property="Button.FontFamily" Value="Times NewRoman"></Setter>

                <Setter Property="Button.FontSize" Value="30"></Setter>

                <Setter Property="Button.FontWeight"Value="Bold"></Setter>

                <Setter Property="Button.Background">

                    <Setter.Value>

                        <ImageBrushImageSource="C:\\Image1.bmp"></ImageBrush>

                    </Setter.Value>

                </Setter>

           </Style.Setters>

       </Style>

   </Window.Resources>

写法2(简化):

   <Window.Resources>

       <Style x:Key="BigFontStyleButton" TargetType="Button">

           <Style.Setters>

                <SetterProperty="FontFamily" Value="Times NewRoman"></Setter>

                <SetterProperty="FontSize" Value="30"></Setter>

                <SetterProperty="FontWeight" Value="Bold"></Setter>

                <SetterProperty="Background">

                    <Setter.Value>

                        <ImageBrushImageSource="C:\\Image1.bmp"></ImageBrush>

                    </Setter.Value>

                </Setter>

           </Style.Setters>

       </Style>

</Window.Resources>

1.3事件设置器(Setters的EventSetter)


下面是事件设置器的用法。事实上事件设置器很少使用,都是用事件触发器代替的。

XAML标记代码:

<Window.Resources>

       <Style x:Key="MouseOverHightLightStyle"TargetType="TextBox">

           <Style.Setters>

                <EventSetterEvent="MouseEnter"Handler="mouseEnter_Event"></EventSetter>

                <EventSetterEvent="MouseLeave"Handler="mouseLeave_Event"></EventSetter>

                <SetterProperty="FontSize" Value="40"></Setter>

           </Style.Setters>

       </Style>

   </Window.Resources>

   <StackPanel>

       <TextBox Style="{StaticResourceMouseOverHightLightStyle}">TextBox</TextBox>

</StackPanel>

事件处理代码:

private void mouseEnter_Event(objectsender, MouseEventArgs e)

       {

           ((TextBox)sender).Background = new SolidColorBrush(Colors.Red);

       }

       private void mouseLeave_Event(object sender, MouseEventArgs e)

       {

           ((TextBox)sender).Background = null;

       }

1.4样式的继承(BasedOn)


样式之间可以像类继承一样继承。

<Window.Resources>

       <Style x:Key="MouseOverHightLightStyle"TargetType="TextBox">

           <Style.Setters>

                <EventSetterEvent="MouseEnter"Handler="mouseEnter_Event"></EventSetter>

                <EventSetterEvent="MouseLeave" Handler="mouseLeave_Event"></EventSetter>

                <SetterProperty="FontSize" Value="40"></Setter>

           </Style.Setters>

       </Style>

       <Style x:Key="BasedOnMouseOverHightLightStyle"TargetType="TextBox" BasedOn="{StaticResource MouseOverHightLightStyle}">

           <Setter Property="Background"Value="Cyan"></Setter>

           <Setter Property="Foreground"Value="Yellow"></Setter>

       </Style>

   </Window.Resources>

   <StackPanel>

       <TextBox Style="{StaticResource BasedOnMouseOverHightLightStyle}">TextBox</TextBox>

   </StackPanel>

1.5通过控件类型自动应用样式

使用TargetType,但是不定义x:Key,则所有该类型的控件都会默认只用该样式。


例子1(样式类型是TextBox):

<Window.Resources>

       <Style TargetType="TextBox">

           <Style.Setters>

                <SetterProperty="FontSize" Value="40"></Setter>

           </Style.Setters>

       </Style>

   </Window.Resources>

   <StackPanel>

       <TextBox>TextBox</TextBox>

       <Button Name="button1" Content="Button1"></Button>

</StackPanel>


例子2(样式类型为Button):

<Window.Resources>

       <Style TargetType="Button">

           <Style.Setters>

                <SetterProperty="FontSize" Value="40"></Setter>

           </Style.Setters>

       </Style>

   </Window.Resources>

   <StackPanel>

       <TextBox>TextBox</TextBox>

       <Button Name="button1" Content="Button1"></Button>

<Button Name="button2" Content="Button2"Style="{x:Null}"></Button>

</StackPanel>


0 0
原创粉丝点击