.net ResourceDictionary位于单独的程序集中

.net ResourceDictionary位于单独的程序集中,.net,wpf,xaml,controltemplate,resourcedictionary,.net,Wpf,Xaml,Controltemplate,Resourcedictionary,我有一些资源字典文件(MenuTemplate.xaml、buttonemplate.xaml等),我想在多个不同的应用程序中使用它们。我可以将它们添加到应用程序的程序集中,但是如果我在一个程序集中编译这些资源并让我的应用程序引用它会更好,对吗 构建资源程序集后,如何在应用程序的App.xaml中引用它?目前,我使用ResourceDictionary.MergedDictionaries合并各个字典文件。如果在程序集中有它们,如何在xaml中引用它们?请查看。你想要这样的东西: <Res

我有一些资源字典文件(MenuTemplate.xaml、buttonemplate.xaml等),我想在多个不同的应用程序中使用它们。我可以将它们添加到应用程序的程序集中,但是如果我在一个程序集中编译这些资源并让我的应用程序引用它会更好,对吗

构建资源程序集后,如何在应用程序的App.xaml中引用它?目前,我使用ResourceDictionary.MergedDictionaries合并各个字典文件。如果在程序集中有它们,如何在xaml中引用它们?

请查看。你想要这样的东西:

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

查看。你想要这样的东西:

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

举个例子,只需回答15秒即可-

假设您在名为“common”的WPF库中有“styles.xaml”,并且希望从主应用程序项目中使用它:

  • 将主项目的引用添加到“公共”项目
  • 您的app.xaml应包含:

  • 
    


    举个例子,只需15秒的回答-

    假设您在名为“common”的WPF库中有“styles.xaml”,并且希望从主应用程序项目中使用它:

  • 将主项目的引用添加到“公共”项目
  • 您的app.xaml应包含:

  • 
    


    我正在使用.NET 4.5,但无法使其正常工作。。。我正在使用WPF自定义控件库。这最终对我起了作用

    <ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />
    
    
    

    来源:

    我正在使用.NET 4.5,但无法使其正常工作。。。我正在使用WPF自定义控件库。这最终对我起了作用

    <ResourceDictionary Source="/MyAssembly;component/mytheme.xaml" />
    
    
    

    来源:

    仅资源DLL是您的一个选项。但这并不是必需的,除非您希望在不重新编译应用程序的情况下修改资源。只有一个通用的ResourceDictionary文件也是一个选项。这取决于你多久更换一次资源等等

    <ResourceDictionary Source="pack://application:,,,/
         <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>
    
    
    
    MyAssembly-仅程序集名称,不带扩展名

    FolderStructureInAssembly-如果资源位于文件夹中,请指定文件夹结构

    在进行此操作时,最好同时了解

    WPF支持两个权限:application:///和siteoforigin:///. 应用程序:///权限标识 在编译时已知,包括资源和内容文件。这个 siteoforigin:///权限标识原始文件的站点。范围 下图显示了每个机构的名称


    资源专用DLL是您的一个选项。但这并不是必需的,除非您希望在不重新编译应用程序的情况下修改资源。只有一个通用的ResourceDictionary文件也是一个选项。这取决于你多久更换一次资源等等

    <ResourceDictionary Source="pack://application:,,,/
         <MyAssembly>;component/<FolderStructureInAssembly>/<ResourceFile.xaml>"/>
    
    
    
    MyAssembly-仅程序集名称,不带扩展名

    FolderStructureInAssembly-如果资源位于文件夹中,请指定文件夹结构

    在进行此操作时,最好同时了解

    WPF支持两个权限:application:///和siteoforigin:///. 应用程序:///权限标识 在编译时已知,包括资源和内容文件。这个 siteoforigin:///权限标识原始文件的站点。范围 下图显示了每个机构的名称

    使用XAML:

    如果您知道另一个
    程序集
    结构,并且希望
    资源
    位于c#代码中,请使用以下代码:

     ResourceDictionary dictionary = new ResourceDictionary();
     dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
     foreach (var item in dictionary.Values)
     {
        //operations
     }
    
    输出:如果我们想将项目
    WpfControlLibrary1
    ResourceDictionary
    RD1.xaml
    使用到
    StackOverflowApp
    项目中

    项目结构

    资源字典:

    代码输出:

    PS:所有
    ResourceDictionary
    文件应具有
    生成操作
    作为“
    Resource
    ”或“
    Page

    使用C:

    如果有人想要纯c代码的解决方案,请查看我的

    使用XAML:

    如果您知道另一个
    程序集
    结构,并且希望
    资源
    位于c#代码中,请使用以下代码:

     ResourceDictionary dictionary = new ResourceDictionary();
     dictionary.Source = new Uri("pack://application:,,,/WpfControlLibrary1;Component/RD1.xaml", UriKind.Absolute);
     foreach (var item in dictionary.Values)
     {
        //operations
     }
    
    输出:如果我们想将项目
    WpfControlLibrary1
    ResourceDictionary
    RD1.xaml
    使用到
    StackOverflowApp
    项目中

    项目结构

    资源字典:

    代码输出:

    PS:所有
    ResourceDictionary
    文件应具有
    生成操作
    作为“
    Resource
    ”或“
    Page

    使用C:

    如果有人想要纯c代码的解决方案,请查看我的

    对于UWP:

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

    <ResourceDictionary Source="ms-appx:///##Namespace.External.Assembly##/##FOLDER##/##FILE##.xaml" />
    
    
    
    然后如何通过Visual Studio 2010属性窗口使styles.xaml中定义的资源可用?如果我选择一个元素,然后单击其背景属性的“应用资源”,它只显示SystemColor,而不显示styles.xaml中定义的颜色。但是,如果我自己在XAML中键入资源名称,它会工作,因此它被正确引用。只是想补充一点,如果您从UserControl引用ResourceDictionary,那么您需要在两个位置添加对程序集的引用:在UserControl和主窗口项目中。否则会出现运行时错误。那么如何通过Visual Studio 2010属性窗口使styles.xaml中定义的资源可用?如果我选择一个元素,然后单击它的