WPF体验(3)

18 篇文章 0 订阅
 

样式

 

样式类似于Html中的CSS,如果你的界面有许多元素(例如按钮)的外观有相同的属性,那么可以把这些属性集中到一个称为资源的元素中,之后每个元素可以通过引用相应的资源来达到外观一致性的目的。

下面的Xaml演示了上述的效果:

 

<DockPanel xmlns="http://schemas.microsoft.com/winfx/avalon/2005"

xmlns:x="http://schemas.microsoft.com/winfx/xaml/2005"

>

<DockPanel.Resources>

    <Style TargetType="{x:Type Menu}" >

        <Setter Property="FontSize" Value="12" />

        <Setter Property="FontFamily" Value="Verdana" />

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

    </Style>

    <Style x:Key="Header" TargetType="{x:Type StackPanel}">

        <Setter Property="Background">

            <Setter.Value>

                <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">

                    <LinearGradientBrush.GradientStops>

                        <GradientStop Offset="0" Color="#0000FF" />

                        <GradientStop Offset="0.5" Color="#FFFFFF" />

                        <GradientStop Offset="1" Color="#0000FF" />

                    </LinearGradientBrush.GradientStops>

                </LinearGradientBrush>

            </Setter.Value>

    </Setter>

    </Style>

    <Style TargetType="{x:Type Button}">

<Setter Property="Margin" Value="10,10,10,0"/>

<Setter Property="DockPanel.Dock" Value="Top"/>

<Setter Property="Height" Value="25"/>

<Setter Property="Width" Value="100"/>

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

<Setter Property="Background">

  <Setter.Value>

    <RadialGradientBrush>

        <RadialGradientBrush.GradientStops>

<GradientStop Offset="0" Color="#FFFFFF" />

<GradientStop Offset="2" Color="#0000FF" />

        </RadialGradientBrush.GradientStops>

    </RadialGradientBrush>

  </Setter.Value>

</Setter>

      </Style>

  </DockPanel.Resources>

 

<StackPanel Name="Header" DockPanel.Dock="Top" Height="100" Style="{StaticResource Header}"/> 

<Menu DockPanel.Dock="Top">

<MenuItem Header="File"/>

<MenuItem Header="Eidt" />

<MenuItem Header="View" />

<MenuItem Header="Tools"/>

<MenuItem Header="Help"/>

</Menu>

 

<StackPanel DockPanel.Dock="Bottom" Height="40" Background="DarkBlue" />

<StackPanel DockPanel.Dock="Left" Width="120" Background="LightGray">

 

<Button Height="30" HorizontalAlignment="Left" FontFamily="VerDana">

First</Button>

<Button Height="30" HorizontalAlignment="Left" FontFamily="VerDana">

Second</Button>

<Button Height="30" HorizontalAlignment="Left" FontFamily="VerDana">

Third</Button>

<Button Height="30" HorizontalAlignment="Left" FontFamily="VerDana">

Quit</Button>

 

</StackPanel>

<StackPanel />

 

</DockPanel>

 

在代码中,我们在DockPanel的资源定义了HeaderStackPanel背景以及Button的背景和其他属性。因为有多个StackPanel,我们只要求Header有渐变的背景,所以必须给Style一个Key,这样Header面板就可以通过Style="{StaticResource Header}"引用资源的设置。

在按钮的样式定义中,我们并没有设置key,这样对所有按钮有效。

本例中我们不打算对代码做更多的解释,仔细研究代码,想必你会理解。下一次我们介绍图形功能。

WPF体验(一)
WPF体验(二)
WPF体验(四)
WPF体验(五)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值