WPF入门的样式介绍

如果之前是来自 Web 开发领域,使用HTML和CSS,那么会很快意识到 XAML 与 HTML 非常相似:使用标签,可以定义应用程序的结构布局。

甚至可以使用内联属性(如 Foreground、FontSize 等)让这些元素看起来像某种方式,就像可以在本地设置 HTML 标签的样式一样。

但是当想在三个不同的 TextBlock 控件上使用完全相同的字体大小和颜色时会发生什么?可以将所需的属性复制/粘贴到它们中的每一个,但是当三个控件变成 50 个控件并分布在多个窗口时会发生什么?当意识到字体大小应该是 14 而不是 12 时会发生什么?

WPF 引入了样式,这对于 XAML 来说就像 CSS 对于 HTML。使用样式,可以对一组属性进行分组并将它们分配给特定控件或特定类型的所有控件,就像在 CSS 中一样,一个样式可以从另一个样式继承。

来看个示例:

<Window x:Class="WpfAppDATA.MainWindow"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SimpleStyleSample" Height="200" Width="250">
    <StackPanel Margin="10">
        <StackPanel.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="Foreground" Value="Gray" />
                <Setter Property="FontSize" Value="24" />
            </Style>
        </StackPanel.Resources>
        <TextBlock>Header 1</TextBlock>
        <TextBlock>Header 2</TextBlock>
        <TextBlock Foreground="Blue">Header 3</TextBlock>
    </StackPanel>
</Window>

示例效果:

对于使用 StackPanel 的资源,我们定义了一个Style

使用 TargetType 属性告诉 WPF 此样式应应用于范围内的所有 TextBlock 控件(StackPanel),然后向该样式添加两个 Setter 元素。Setter 元素用于设置目标控件的特定属性,在本例中为ForegroundFontSize属性。该物业 属性告诉WPF我们想要的属性定位,和属性定义所需的值。

请注意,最后一个 TextBlock 是蓝色而不是灰色。这样做是为了更好的展示,虽然控件可能从指定的样式获取样式,但可以完全自由地在控件上本地覆盖它 - 直接在控件上定义的值将始终优先于样式值。

我们使用了一个非常基本的本地定义样式示例,它针对特定类型的控件 - TextBlock。但是,样式可以定义在几个不同的范围内,这取决于我们希望在何处以及如何使用它们,甚至可以将样式限制为仅用于明确需要的控件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值