WPF—资源与资源字典

WPF—资源与资源字典

开发工具与关键技术:VS2015, XAML,C#
作者:张金鱼
撰写时间:2019 年 3月 28 日

WPF资源分为静态资源和动态资源。静态资源是在程序载入前就对资源进行引用,类似样式资源,而动态资源是程序在运行工程中才去访问的资源,故事版资源;资源字典是个定级元素,在它里面直接封装资源供整个项目使用,在这里我就对资源和资源字典做个简单的介绍。

1、 资源;

资源定义在根元素下,和HTML中的CSS类似,格式一般是

<根元素. Resources>
   <资源定义 x:key=”资源标记名” />
</根元素. Resources>
    //子元素调用
<子元素 (对应)属性名=”{StaticResource 资源标记名}” />

这样资源的样式就引用过来了,例子如下:

 <Grid>
          //定义资源
        <Grid.Resources>
         //线性渐变画刷定义背景色
            <LinearGradientBrush x:Key="bggrid" StartPoint="0,0" EndPoint="1,1">
                <GradientStop Color="Yellow" Offset="0"></GradientStop>
                <GradientStop Color="Green" Offset="0.25"></GradientStop>
                <GradientStop Color="Blue" Offset="0.5"></GradientStop>
                <GradientStop Color="Purple" Offset="1"></GradientStop>
            </LinearGradientBrush>
        </Grid.Resources>
        //按钮调用资源
        <Button Background="{StaticResource bggrid}" Width="100" Height="50" Content="资源" Foreground="White"></Button>
</Grid>

效果如下:
在这里插入图片描述
这是一个网格布局下的按钮,背景颜色引用了静态资源字典bggrid里面定义好的样式。因为我定义的线性渐变背景色,所以按钮背景色就是渐变色背景。

2、 资源字典;

资源字典是我们自己新建的一个xaml文件,在项目里添加新建项,然后选中资源字典,新建资源字典,如图:
在这里插入图片描述
资源字典的写法和资源一样,直接在文件里定义你的资源就可以了

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:资源字典">
<!-----定义textbox的样式,不写key,整个项目可以使用--->
    <Style TargetType="TextBox">
        <Setter Property="FontFamily" Value="楷体"></Setter>
        <Setter Property="FontSize" Value="50"></Setter>
        <Setter Property="Foreground" Value="Red"></Setter>
    </Style>
</ResourceDictionary>

新建好资源字典后还要去启动项(App.xaml)合并资源字典,这样才可以供整个项目使用

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
<!----sourceDictionary里面的Source链接需要合并的资源字典名称,
//每个 sourceDictionary标签只能连接一个资源字典,
//可以定义多个sourceDictionary 来连接多个资源字典-
                <ResourceDictionary Source="Dictionary1.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</Application.Resources>

窗体xaml代码如下图所示,这里没有写代码块,因为代码不多,所以图片展示xaml代码和效果图片
在图中我并没有在当前窗体中定义textbox的前景色,而它却根据元素种类引用到了应用程序资源字典的样式了;

在这里插入图片描述
资源和资源字典不仅仅能定义元素的样式,还能定义资源的模板、故事版、触发器等等,方便了为较多同样控件定义样式时代码的冗余、重复定义同一样式,比如我们一个项目的文本框的样式需要同一而定,就直接可以在资源或者资源字典里定义它们的样式,或者定义一些控件的故事版等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值