WPF之资源

  我们把有用的东西称为资源,程序中存放数据的地方有很多,可以放在数据库里,可以存储在变量里,界于数据库存储与变量存储之间,我们还可以把数据存储在程序主体之外的文件里。外部文件与程序主体分离,这就有可能丢失或损坏,为了避免丢失或损坏,编译器允许我们把外部文件编译进程序主体,称为程序主体不可分割的一部分,这就是传统意义上的程序资源,也成为二进制资源。

  WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源。每个界面元素都可以携带自己的资源并可被自己的子级元素共享。

  对象资源

  每个WPF的界面元素都具有一个名为Resource的属性。这个属性继承自FrameworkElement类,其类型为ResourceDictionayr。ResourceDictionary能够以“键-值”对的形式存储资源,当需要用到某个资源时,使用“键-值”对可以索引到资源对象。

  假如现在我们需要一个字符串资源,在TextBlock里显示,就可以如下方式实现:

<Window x:Class="WpfApplication9.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ResourceDictionary>
            <sys:String x:Key="str">Hello World</sys:String>
        </ResourceDictionary>
    </Window.Resources>
    <StackPanel>
        <TextBlock Text="{StaticResource str}" Margin="10"></TextBlock>
    </StackPanel>
</Window>

  通过StaticResource使用资源,意味着程序载入内存时只使用一次,之后就不再访问这个资源了,如果这个资源发生了变化,程序也不会有任何变化;如果希望在资源发生变化时,程序也做出相应的改变,就需要通过DynamicResource使用资源。

  在检索资源时,先查找控件自己的Resource属性,如果没有这个资源程序会沿着逻辑树向上一级控件查找,如果连最顶级的容器都没有这个资源,程序会去查找Application.Resources,如果还么有找到,那就会抛出异常。

  在C#中使用资源,代码如下:

string text = (string)this.FindResource("str");

  或者

string text = (string)this.Resources["str"];
时间: 2024-11-03 15:39:39

WPF之资源的相关文章

wpf 引用资源文件

一.什么是资源 通常使用  WPF  资源作为重用通常定义的对象和值的简单方法. 在 WPF 中资源通常用作"样式"(Style).样式模板.数据模板等. 二.资源的定义及 XAML 中引用 资源可以定义在以下几个位置: 1 应用程序级资源 定义在 App.xaml 文件中, 作为整个应用程序共享的资源存在  ; 在 App.xaml 文件中定义: <Application.Resources> <ResourceDictionary> <Resource

22个经典的WPF源代码资源合集

22个经典的WPF源代码资源合集 http://download.csdn.net/album/detail/1503

WPF 之 资源(Resource)

1.什么叫WPF的资源(Resource)? 资源是保存在可执行文件中的一种不可执行数据.在WPF的资源中,几乎可以包含图像.字符串等所有的任意CLR对象,只要对象有一个默认的构造函数和独立的属性. 也就是说,应用程序中非程序代码的内容,比如点阵图.颜色.字型.动画/影片档以及字符串常量值,可将它们从程序中独立出来,单独包装成"资源(Resource)". 包含两种资源:静态资源(Static Resource),动态资源(Dynamic Resources).这两者的区别是: [1]

WPF 中资源路径的问题

WPF 中资源路径的问题 1. 引用当前工程的资源(注意xxxx.png的build action 应设置为Resource 或Embedded Resource) ? 1 <ImageBrush ImageSource="/currentAssemblyName;component/subfoldername/xxxx.png"/> 2.引用其它工程的资源  (注意xxxx.png的build action 应设置为Resource 或Embedded Resource)

WPF Resource资源

WPF不但支持程序级的传统资源,同时还推出了独具特色的对象级资源,每个界面元素都可以携带自己的资源并可被自己的子级元素共享.比如后面的章节我们会讲到模板.程序样式和主题就经常放在对象资源里面.这样一来,在WPF程序中数据就分为4个等级存储了:数据库里的数据相当于存放在仓库里面,资源文件里的数据就相当于放进了旅行箱里,WPF对象资源里面的数据相当于存放在携带的背包里,变量里面的数据相当于拿在手里. 1. WPF对象资源的定义和查找 每个WPF界面元素都有一个名为Resource的属性,这个属性继承

WPF 调用资源图片

原文:WPF 调用资源图片 最近做的wpf项目中,在开发的时候,把图片放到了bin下面,采用了imagePath =System.IO.Directory.GetCurrentDirectory()+"/images/starShow.jpg";获得图片是可以的,可是发布之后却获取不到图片,这让我很纠结,后来通过把图片添加到了资源中,然后调用资源即可解决了问题 imagePath = "pack://application:,,,/Financial;component/Pr

[WPF]静态资源(StaticResource)和动态资源(DynamicResource)

一.文章概述 本演示介绍了WPF的静态资源和动态资源的基本使用,并对两者做了简单的比较. 静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了:动态资源(DynamicResource)使用指的是在程序运行过程中然会去访问资源. 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1c0q2BVM 在线播放:http://v.youku.com/v_show/id_XODE4MTI1MzYw.html 温馨提示:如果屏幕

【转】【WPF】资源读取 URI

一开始看到WPF里面经常用如下语句来构造资源文件Uri: Uri uri = new Uri("/AssemblyName;component/image.png"); 我还以为这种格式的字符串是URI标准规定的,但是网上查了一下却没发现有这种格式的URI字符串. URI是统一资源标识符,通用文法为: 协议名(http,https,ftp,file等)+冒号+协议所对应的内容 URI又分为URL和URN,URL是用来定义一个资源的访问路径.而URN则是用来定义一个资源的名称.(http

WPF合并资源字典

1.合并多个外部资源字典成为本地字典 示例代码 <Page.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="myresourcedictionary1.xaml"/> <ResourceDictionary Source="myresourcedictionary2.xam

WPF 杂谈——资源文件

编写一个应用难免要用到WPF本身的控件.不管是WinForm还是网页都会有自己的控件.只是在写法和用法上有所不同而以.而控件命名却离不开那几个单词.所以不用担心判断不出来哪个是按扭,哪个是文本框.举个例子吧. HTML <input type="button" value="扭按" /> WinForm private System.Windows.Forms.Button button1; WPF <Button Content="按扭