《深入浅出WPF》学习笔记之深入浅出话资源

资源的使用

每个继承自FrameworkElement的类都有一个Resources的字段属性,用来存放自己的资源对象,Resources的类型为SourceDictionary,可以指定Source属性为一个文件路径而引用整个文件的资源。

    <Window.Resources>
        <sys:String x:Key="title">资源示例</sys:String>
    </Window.Resources>

//引用外部资源文件
    <Window.Resources>
        <ResourceDictionary Source="skin.xaml"></ResourceDictionary>
    </Window.Resources>

//通过代码查找
            Object obj1 = Resources["key1"];

            Object obj2 = FindResource("key2");

当在XAML中通过标记扩展引用资源时会自动向对象上层寻找,直到找到Application.Resources,还未找到时抛出异常。通过代码调用方法FindResource的效果与在XAML中通过标记扩展应用相同,即会自动向上层对象查找,未找到时抛出异常。通过具体对象的引用Resources["key"]只会查找该字典中的资源,并且未找到时不会抛出异常。

DynamicResource与StaticResource

静态资源指的是在程序载入后一次性使用资源,动态资源指的是在程序运行过程中仍会去访问资源,如果资源已改变则引用资源的对象会得到新资源值。如果确定资源不会改变应使用StaticResource引用资源,如果资源可能会改变应使用DynamicResource应用资源。

二进制资源

可以在项目的Properties文件夹中修改Resources.resx文件来使用字符串形式的二进制资源,在XAML中通过Static标记扩展引用字符串格式的二进制资源,需要把自动生成的Resources类改成public并把所在命名空间引入到XAML中。引用其他文件资源时直接把文件加入到项目中并设置文件属性的Build Action为Resource,Copy to Output Directory为Do Not Copy。直接通过相对路径就可以引用项目中的二进制资源。示例代码:

<Image x:Name="img" Source="Resources/Image1.png" Width="50" Height="50"></Image>

//或
img.Source = new BitmapImage(new Uri("Resources/Image1.png", UriKind.Relative));
时间: 2024-10-08 15:10:33

《深入浅出WPF》学习笔记之深入浅出话资源的相关文章

《深入浅出WPF》笔记——绘画与动画

<深入浅出WPF>笔记——绘画与动画 本篇将记录一下如何在WPF中绘画和设计动画,这方面一直都不是VS的强项,然而它有一套利器Blend:这方面也不是我的优势,幸好我有博客园,能记录一下学习的过程.在本记录中,为了更好的理解绘画与动画,多数的例子还是在VS里面敲出来的.好了,不废话了,现在开始. 一.WPF绘画 1.1基本图形 在WPF中可以绘制矢量图,不会随窗口或图型的放大或缩小出现锯齿或变形,除此之外,XAML绘制出来的图有个好处就是便于修改,当图不符合要求的时间,通常改某些属性就可以完成

WPF学习笔记4&mdash;&mdash;Layout之2

下面简单介绍常见的面板. 一.Grid 1.Grid关于调整行列距离有三种方法:绝对大小,自动大小,比例大小.如下: <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></Co

WPF学习笔记2&mdash;&mdash;XAML之2

三.事件处理程序与代码隐藏 例如,为一个Page添加一个Button控件,并为该Button添加事件名称Button_Click: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ExampleNamespace.ExampleP

WPF学习笔记系列之一 (布局详情)

布局:StackPanel  栈布局:控件不会拐弯且多出的不再显示.DockPanel   停靠布局 吸在上边下边或左右.WrapPanel    环绕布局   一行控件会拐弯Canvas  进行基于坐标的布局 Grid中若不指定Grid.Row属性及Grid.Column则默认为:0行,0列.RowDefinitions ColumnDefinitions ShowGridLines=true <ColumnDefinition Width="100"></Colu

【WPF学习笔记】之 System.Exception 对象名 &#39;XXXX&#39; 无效。

我在运行vs时候发现项目报错,如下图: 报Exception错误,对象名"XXXXXX"无效. 经过调查得知,因为连接数据库的库名写错了,如下: 对应正确数据库的库名: 把库名改正确,问题就解决了. [WPF学习笔记]之 System.Exception 对象名 'XXXX' 无效.

JAVA学习笔记 -- 多线程之共享资源

在多线程程序运行过程中,可能会涉及到两个或者多个线程试图同时访问同一个资源.为了防止这种情况的发生,必须在线程使用共享资源时给资源"上锁",以阻挡其它线程的访问.而这种机制也常常被称为互斥量,本文主要介绍它的两种方式synchronized和Lock . 1.synchronized 当任务要执行被synchronized关键字保护的代码片段的时候,它会检查锁是否可用,然后获取锁,执行代码,释放锁.synchronized也有两种用法: A.synchronized方法 import

《深入浅出WPF》学习笔记之深入浅出话Binding

Binding作为数据的桥梁,它的两端分别是Binding的源(Source)和目标(Target),用来把Source中的数据送到Target中,并把在Target中的改变返回到Source.一般情况,Binding的源是逻辑层的对象,目标是UI层的控件对象. Binding的基本使用方法 如果想让作为数据源的对象在发生更改时自动显示到界面上,数据源的对象需要实现INotifyPropertyChanged接口.设置绑定时需要指定绑定到数据源的哪个属性,这个属性称为Binding的路径Path

《深入浅出WPF》学习笔记之深入浅出话事件

WPF的事件为路由事件,路由的环境为UI组件树(Visual Tree),Visual Tree由控件和控件的组成元素组成,事件可以在控件内部传递并处理.另一个树为Logical Tree,只包含布局控件和其他控件而不包括控件的组成元素.因此路由事件沿着Visual Tree传递. 传统.Net开发中的直接事件模型的缺点 事件拥有者和响应者必须建立订阅关系,如果想让事件向外层控件传递必须手动编写事件响应链,即每个控件都要订阅事件并向其他控件再次传递该事件. 路由事件 与依赖属性类似,每个路由事件

《深入浅出WPF》笔记一

1.项目模板 Visual Studio自动配置编译器参数,并准备好一套基本的源代码. 2.App.xaml/App.xaml.cs 声明程序的进程,并指定程序的主窗体. 3.Attribute和Property Attribute:特征,属于编程语言语法层面,是为了区分同类的不同语法元素. Property:属性,属于面向对象理论范畴,指的是类中用来表示事物状态的成员. Attribute只是用来影响类在程序中的用法,Property则对应抽象对象本身的性状. 使用能够进行面向对象编程的语言,