WPF资源字典使用

转载 2013年12月03日 11:14:50

资源字典出现的初衷就在于可以实现多个项目之间的共享资源,资源字典只是一个简单的XAML文档,该文档除了存储希望使用的资源之外,不做任何其它的事情。

 

1.  创建资源字典

      创建资源字典的过程比较简单,只是将需要使用的资源全都包含在一个xaml文件之中即可。如下面的例子(文件名test.xaml,与后面的app.xaml文件中的内容相对应):

复制代码
<?xml version="1.0" encoding="utf-8"?>

<!--This file is auto generated by XDraw.-->

<!--Do not modify this file directly, or your changes will be overwritten.-->

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <LinearGradientBrush x:Key="FadeBrush">

       <GradientStop Color="Red" Offset="0"/>

       <GradientStop Color="Gray" Offset="1"/>

    </LinearGradientBrush>

</ResourceDictionary>
复制代码

     说明:在创建资源的时候要确保资源文件的编译选项为page,这样就能够保证XAML资源文件最终能够编译为baml文件。但是如果设置为Resource也是一个不错的选择,这样它能够嵌入到程序集中,但是不被编译,当然其解析的速度回稍微慢一点。

 

2.  使用资源字典

2.1  集成资源

     要是用资源字典,首先要将资源字典集成到应用程序的某些资源集合中。一般的做法都是在app.xaml文件中进行集成。代码如下:

复制代码
        <ResourceDictionary>

            <ResourceDictionary.MergedDictionaries>

                <ResourceDictionary Source="Test.xaml"/>

            </ResourceDictionary.MergedDictionaries>

        </ResourceDictionary>
复制代码

     说明:上面的标记通过明确地创建一个ResourceDictionary对象进行工作,资源集合总是ResourceDictionary对象。但是这只是需要明确指定细节从而可以设定ResourceDictionary.MergedDictionaries属性的一种情况。如果没有这个步骤ResourceDictionary.MergedDictionaries属性将为空。ResourceDictionary.MergedDictionaries属性是一个ResourceDictionary对象的集合,可以使用这个集合提供自己需要使用的资源的集合。也就是说如果需要某个资源,只需要将与该资源相关的xaml文件。添加到这个属性中即可。如上面添加test.xaml一样。

 

2.2  使用资源

     集成之后就可以在当前的工程中使用这些资源了。使用方法如下:

复制代码
<Window x:Class="HelloWpf.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

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

        Title="MainWindow" Height="340" Width="406" WindowStartupLocation="CenterScreen"

        Icon="SC.ico" >

    

    <Grid Height="304" Width="374">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

 

        <Button Margin="121,30,107,230" Grid.Row="2" Click="Button_Click"  Background="{StaticResource FadeBrush}">

        </Button>

    </Grid>

</Window>
复制代码

     使用资源的方法比较简单只需要使用StaticResource 关键字去添加即可。

 

3.  总结:

     使用资源字典的主要原因有两个:

    a. 提供皮肤功能。

    b. 存储需要被本地话的内容(错误消息字符串等,实现软编码)

     使用过程也比较简单,归纳起来主要有下面几个步骤:

    1. 创建资源字典文件

    2. 资源字典集成

    3. 使用字典中的资源

wpf使用资源字典组织资源

如果希望在多个项目之间共享资源,可以创建一个资源字典。资源字典是一个存储希望使用的资源的XAML文档。下面是一个资源字典的示例,Dictionary1.xaml: http://schemas.mi...
  • cnwpf
  • cnwpf
  • 2012年05月01日 17:00
  • 3384

WPF之资源字典

最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记...
  • crazyliyang
  • crazyliyang
  • 2013年12月18日 12:48
  • 1693

WPF 资源字典样式引用导致的DependencyProperty.UnsetValue

当样式直接在布局中没问题,但是抽出到单独的资源字典中就报DependencyProperty.UnsetValue错误时,确认没有其他问题时,可以查一下你的新字典是不是依赖了其他字典,并且你的新字典导...
  • a809918928
  • a809918928
  • 2017年01月05日 15:32
  • 869

WPF 为资源字典 添加事件响应的后台类

前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想p
  • loryrichie
  • loryrichie
  • 2014年06月19日 23:48
  • 3182

WPF之资源字典

最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记...
  • crazyliyang
  • crazyliyang
  • 2013年12月18日 12:48
  • 1693

WPF 为资源字典 添加事件响应的后台类

前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想p
  • loryrichie
  • loryrichie
  • 2014年06月19日 23:48
  • 3182

WPF 列表选择,动态调用ResourceDictionary内资源

做WPF项目经常会碰到让客户从列表中选择样式,选定后,动态更改部件的样式。下面以动态更改一个控件的背景图为例子来说说实现的方法。 如果大家有更好的方法,欢迎在评论中提出来。 控件的背景图使...
  • soft2buy
  • soft2buy
  • 2013年12月14日 16:03
  • 9914

WPF中的资源(一) - 静态资源和动态资源

WPF中,每个界面元素都含有一个名为Resources的属性,其存储的是以“键-值”对形式存在的资源,而其子级元素在使用这些资源时会从Resources中找到这些资源。在子级元素引用的资源分为Stat...
  • lzhui1987
  • lzhui1987
  • 2016年08月29日 09:28
  • 1797

WPF对象级资源的定义与查找

文章概述: 本演示介绍了如何定义WPF对象级的资源,并通过XAML代码和C#访问和使用对象级资源。 相关下载(代码、屏幕录像):http://pan.baidu.com/s/1hqvJNY8 在线播放...
  • gjysk
  • gjysk
  • 2014年10月20日 05:44
  • 2029

WPF调用图片路径,或资源图片(WPF编译器、运行期 引用资源)

WPF调用图片路径,或资源图片 http://www.cnblogs.com/sntetwt/p/5402098.html 一、加载本项目的图片 WPF引入了统一资源标识...
  • stableboy
  • stableboy
  • 2017年01月05日 15:38
  • 949
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF资源字典使用
举报原因:
原因补充:

(最多只允许输入30个字)