C# 从dll加载xaml ResourceDictionary

C# 从dll加载xaml ResourceDictionary,c#,wpf,xaml,dll,resourcedictionary,C#,Wpf,Xaml,Dll,Resourcedictionary,我已经为我们的应用程序团队制作了几个资源字典,用于他们未来的应用程序。我已经将包含这些字典的类库项目的内容部署到一个.dll文件中,并希望能够通过在新的WPF解决方案中添加对.dll文件的引用来使用这些字典,我希望在其中创建一个新的应用程序 我的示例中的类库称为“NWF_Class_Library.dll”,它与MainWindow.xaml文件保存在windows资源管理器中的同一文件夹中。是否可以从其中检索资源字典 我读过关于组织获取资源的最佳方式的文章,因此这似乎是可能的,但我发现的所有

我已经为我们的应用程序团队制作了几个
资源字典
,用于他们未来的应用程序。我已经将包含这些字典的类库项目的内容部署到一个.dll文件中,并希望能够通过在新的WPF解决方案中添加对.dll文件的引用来使用这些字典,我希望在其中创建一个新的应用程序

我的示例中的类库称为“NWF_Class_Library.dll”,它与
MainWindow.xaml
文件保存在windows资源管理器中的同一文件夹中。是否可以从其中检索资源字典

我读过关于组织获取资源的最佳方式的文章,因此这似乎是可能的,但我发现的所有方法都是使用“//pack:application:…”语法在与wpf应用程序相同的解决方案中引用xaml。这是一段代码,源代码为空,因为我写的东西都不管用

我们曾希望能够将标准配置以及更普通的有用方法等添加到可以与应用程序一起部署的文件中

<Window x:Class="dll_ref_included.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <ResourceDictionary Source=""/>
    </Window.Resources>
    <Grid>
        <Button Style="{StaticResource myButton}">This</Button>
    </Grid>
</Window>
试试这个:

<ResourceDictionary Source="pack://application:,,,/NWF_Class_Library;component/Dictionary1.xaml"/>

…其中“NWF_Class_Library”是引用程序集的名称,“Dictionary1.xaml”是在此项目中定义的
资源字典的名称


有关包URI以及如何使用它们的更多信息,请参阅。

可以使用“//pack:application:…”语法。您可以提供希望使用的强程序集名称和资源名称。据我所知,此程序集必须加载到您当前的AppDomain中(添加到项目的引用中,或手动加载)。难以置信!我已经尝试过这种语法,但在设计器中出现了一个错误,即在查找资源字典时发生了一个错误pack://application:,,,/NWF\u Class\u Library;component/WPF Resources/Buttons.xaml.“
但是当我忽略错误并运行它时(我以前没有这样做过),我会看到一个完美的按钮!我勒个去?!设计器有点问题,无法处理所有场景。重要的是运行时行为。你可能想完全禁用设计师:老兄,为此浪费了这么多时间!我即将开始我的xaml学习,我确信我的语法是正确的;只是当F5出现错误时,从来没有按过它!我知道下次要用更多的调味品来弥补设计师的错误——我会看看Blend是否也有同样的效果;如果在设计表单时无法看到表单,那将是一个遗憾……Microsoft Blend正确地显示了预览-我将使用它。伙计!这么多浪费!谢谢