ResourceDictionary中在一个单独的组件ResourceDictionary中在一个单

2019-05-11 00:41发布

我有我要在多个单独的应用程序使用的资源字典文件(MenuTemplate.xaml,ButtonTemplate.xaml等)。 我可以将它们添加到应用程序的组件,但它的更好,如果我在一个单一组装编译这些资源,并有我的应用程序引用它,对吗?

资源装配建成后,我怎么可以参考它在我的应用程序的App.xaml? 目前我使用ResourceDictionary.MergedDictionaries合并个体词典文件。 如果我有他们的集会,我怎么可以参考他们在XAML?

Answer 1:

退房的包URI语法 。 你想是这样的:

<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/Subfolder/YourResourceFile.xaml"/>


Answer 2:

一个例子,只是为了让这个15秒答案 -

假设你有“styles.xaml”在名为“共同的”一个WPF库,你想从你的主应用程序项目中使用它:

  1. 从主项目“共同”项目添加引用
  2. 你的App.xaml应包含以下内容:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/Common;component/styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

干杯



Answer 3:

我与.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



Answer 4:

资源DLL是一个选择。 但是,除非你要修改的资源而无需重新编译应用程序它不是必需的。 只有一个共同的资源字典文件也是一种选择。 这取决于你如何经常换资源等。

<ResourceDictionary Source="pack://application:,,,/
     <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>

MyAssembly程序 -只要集名称不带扩展

FolderStructureInAssembly -如果你的资源是在folde,指定的文件夹结构

当你这样做这是更好地了解siteOfOrigin为好。

WPF支持两个部门:应用:///和siteoforigin:///。 应用:///授权标识是在编译时,包括资源和内容文件称为应用程序数据文件。 该siteoforigin:///机关确定的原产地文件的网站。 每个权限范围示于下图。



Answer 5:

对于UWP:

<ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />


Answer 6:

使用XAML:

如果您知道其他assembly的结构,并希望resourcesC#代码,然后用下面的代码:

 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项目WpfControlLibrary1StackOverflowApp项目。

项目的结构

资源词典:

代码输出:

PS:所有ResourceDictionary文件应有Build Action为“ Resource ”或“ Page ”。

使用C#:

如果有人想在纯C#代码的解决方案,然后看到我这个解决方案。



文章来源: ResourceDictionary in a separate assembly