我有我要在多个单独的应用程序使用的资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等)。 我可以将它们添加到应用程序的组件,但它的更好,如果我在一个单一组装编译这些资源,并有我的应用程序引用它,对吗?
资源装配建成后,我怎么可以参考它在我的应用程序的App.xaml? 目前我使用ResourceDictionary.MergedDictionaries合并个体词典文件。 如果我有他们的集会,我怎么可以参考他们在XAML?
我有我要在多个单独的应用程序使用的资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等)。 我可以将它们添加到应用程序的组件,但它的更好,如果我在一个单一组装编译这些资源,并有我的应用程序引用它,对吗?
资源装配建成后,我怎么可以参考它在我的应用程序的App.xaml? 目前我使用ResourceDictionary.MergedDictionaries合并个体词典文件。 如果我有他们的集会,我怎么可以参考他们在XAML?
退房的包URI语法 。 你想是这样的:
<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>
一个例子,只是为了让这个15秒答案 -
假设你有“styles.xaml”在名为“共同的”一个WPF库,你想从你的主应用程序项目中使用它:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
干杯
我与.NET 4.5工作,并不能得到这个工作...我使用WPF自定义控件库。 这到底是为我工作...
<ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />
来源: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/11a42336-8d87-4656-91a3-275413d3cc19
资源DLL是一个选择。 但是,除非你要修改的资源而无需重新编译应用程序它不是必需的。 只有一个共同的资源字典文件也是一种选择。 这取决于你如何经常换资源等。
<ResourceDictionary Source="pack://application:,,,/
<MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>
MyAssembly程序 -只要集名称不带扩展
FolderStructureInAssembly -如果你的资源是在folde,指定的文件夹结构
当你这样做这是更好地了解siteOfOrigin为好。
WPF支持两个部门:应用:///和siteoforigin:///。 应用:///授权标识是在编译时,包括资源和内容文件称为应用程序数据文件。 该siteoforigin:///机关确定的原产地文件的网站。 每个权限范围示于下图。
对于UWP:
<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />
使用XAML:
如果您知道其他assembly
的结构,并希望resources
在C#代码,然后用下面的代码:
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
foreach (var item in dictionary.Values)
{
//operations
}
输出:如果我们要使用ResourceDictionary
RD1.xaml
项目WpfControlLibrary1
到StackOverflowApp
项目。
项目的结构 :
资源词典:
代码输出:
PS:所有ResourceDictionary
文件应有Build Action
为“ Resource
”或“ Page
”。
使用C#:
如果有人想在纯C#代码的解决方案,然后看到我这个解决方案。