快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门新葡亰黑平台_龟发之家论坛



WPF中的资本有两种,一种称为"法度榜样集资本"(assembly resource),另一种称为"工具资本"(object resource)也称为"逻辑资本",WPF中统称后者为"逻辑资本"。

一、法度榜样集资本

利用法度榜样中的XAML、图片、音频、视频等文件,都可以将其作为法度榜样集资本组织起来。

法度榜样集资本可以以以下3种要领打包:

1.资本文件(Resource File):直接嵌入到法度榜样集中。

2.内容文件(Content File):该文件的相关信息会编译到法度榜样集中,如文件的相对位置。

3.Site of Origin文件:不参加编译,利用法度榜样不知道该文件是否存在。

资本文件

向项目中添加一个jpg的图片,默认的Build Action就为Resource,在Xaml中的2种应用要领如下:

Image Source="1.jpg" />

ImageSource="pack://application:,,,/1.jpg"/>

答疑:

属性中的Build Action中有一个Embedded R澳门新葡亰黑平台esource和Resource,差别呢?

两者都可以将文件编译到法度榜样集资本中去,前者用于Winform项目中嵌入法度榜样集资本,在WPF中则选择后者。

内容文件

右键文件设置Build Action属性为Content,同时设置属性Copy to Output Directory 设置为Copy always或者Copy if newer,则可以复制到bin\debug下。

Image Source="Images/1.jpg">Image>

Image Source="/Images/2.jpg" Grid.Row="1">Image>

以上两个要领均可以显示输出为Content的图片。

Site of Origin文件

Site of Orign文件根本不参加编译,利用法度榜样编译时刻不知道该文件是否存在,只有运行时刻才知道。

设置设置设备摆设摆设此类文件,右键属性澳门新葡亰黑平台设置Build Actoin为None,Copy to Output Directory设置为Copy always或者Copy if newer。经由过程代码造访必要应用GetRemoteStream措施。

Uri uri = new Uri("/siteoforiginfile.xaml", UriKind.Relative);

StreamResourceInfo info = Application.GetRemoteStream(uri);System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader();

Page page = (Page)reader.LoadAsync(info.Stream);this.siteoforiginfileframe.Content = page;

Uri语法

Uri可以经由过程当前法度榜样集、被引用的法度榜样集、相对法度榜样集的一个位置和随意率性位置标识造访资本。

WPF中的Uri由3部分组成,第一个部分的协议是pack;第2个部分成为"authority",有两种值:一是application://,表示编译时知道的文件,主要指资本和内容文件;二是siteoforign://,澳门新葡亰黑平台表示Site of Origin文件;第3部分是路径,假如是引用法度榜样集中资本,环境会轻细繁杂一点。路径必须包孕引用的法度榜样集名称和一个Component标识,表示引用的不是本地法度榜样集的资本,无意偶尔还必要加上版本信息。

WPF中的路径分为相对和绝对路径。WPF中的默认Uri设置是pack://application:,,,,是以引用site of orign文件必须要应用绝对路径。

pack://application:,,,/ResourceFile.xaml

/ResouceFile.xaml

第一种为绝对路径,第二种为相对路径。

DockPanel>

StackPanel DockPanel.Dock="Top">

GroupBox Header="Absolute Pack URIs">StackPanel>

Frame Source="pack://application:,,,/ResourceFile.xaml" />Frame Source="pack://application:,,,/Subfolder/ResourceFile.xaml" />

Frame Source="pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml" />Frame Source="pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" />

Frame Source="pack://application:,,,/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml" />Frame Source="pack://application:,,,/ContentFile.xaml" />

Frame Source="pack://application:,,,/Subfolder/ContentFile.xaml" />Frame Source="pack://siteoforigin:,,,/SiteOfOriginFile.xaml" />

Frame Source="pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml" />StackPanel>

GroupBox>

GroupBox Header="Relative Pack URIs">StackPanel>

Frame Source="/ResourceFile.xaml" />Frame Source="/Subfolder/ResourceFile.xaml" />

Frame Source="/ReferencedAssembly;component/ResourceFile.xaml" />Frame Source="/ReferencedAssembly;component/Subfolder/ResourceFile.xaml" />

Frame Source="/ReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml" />Frame Source="/ContentFile.xaml" />

Frame Source="/Subfolder/ContentFile.xaml" />Frame Source="pack://siteoforigin:,,,/SiteOfOriginFile.xaml" />

Frame Source="pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml" />StackPanel>

GroupBox>

StackPanel>

GroupBox Header="Version-Specified Pack URIs">DockPanel>

Button DockPanel.Dock="Top" Click="click0">Get Resource File in Reference Assembly v1.0.0.0Button>Button DockPanel.Dock="Top" Click="click1">Get Resource File in Reference Assembly v1.0.0.1Button>

Frame Name="frame" NavigationUIVisibility="Hidden" />DockPanel>

GroupBox>

DockPanel>

void click0(object sender, RoutedEventArgs e) {

Uri uri = new Uri("/VersionedReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.RelativeOrAbsolute);this.frame.Source = uri;

}

void click1(object sender, RoutedEventArgs e){

Uri uri = new Uri("/VersionedReferencedAssembly;v1.0.0.1;component/ResourceFile.xaml", UriKind.RelativeOrAbsolute);this.frame.Source = uri;

}

此示例为微软供给的Uri的用法,险些涵盖了所有的应用措施,源码下载如下:

WPFUriSample

WPF中的URI处置惩罚顺序

WPF中有两个处置惩罚系统,即siteoforigin澳门新葡亰黑平台:///和applicatoin:///,前者按照供给的路径查找SiteofOrigin文件,后者的对照繁杂:

1。先查找路径是否为内容文件

2.假如未找到,则继承在法度榜样集的资本中查找;假如找到则为资本问及那;澳门新葡亰黑平台

3.假如未找到,则为无效。

逻辑资本(工具资本)

看如下例子:

应用ResourceDictionary组织治理资本

WPF中供给了ResourceDictionary(资本字典)类型的XAML文件组织资本,右键项目ADD菜单-->Resource Dictionary即可创建一个资本字典,资本可以分种别

放在同一个资本文件。如下降画刷资本放在Brushes.xaml文件中:

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

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local ="clr-namespace:mumu_resourcesLib">

ImageBrushx:Key="SadFaceBrush"

TileMode="Tile"ViewportUnits="Absolute" Viewport="0 0 32 32"

ImageSource="sadface.jpg" Opacity="0.3">ImageBrush>

ResourceDictionary>

在App.xaml文件中经由过程MergedDictionaries包孕资本字典文件,这样利用法度榜样就可以造访Brushes.xaml文件中的资本了:

Application x:Class="mumu_shareresources.App"

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

StartupUri="Window1.xaml">Application.Resources>

ResourceDictionary>ResourceDictionary.MergedDictionaries>

ResourceDictionary Source="Brushes.xaml"/>ResourceDictionary.MergedDictionaries>

ResourceDictionary>Application.Resources>

Application>

应用如下:

您可能还会对下面的文章感兴趣: