在WPF中使用用户控件库作为dll参考

问题描述:

我有一个用户控件库项目,其中包含一些资源字典,使用Microsoft Visual Studio 2017创建。资源字典包含我想为其他开发人员提供的XAML样式在团队中将其用于不同的WPF-App项目。将用户控件库项目复制到WPF-App项目中并不是一个好的解决方案。 我试过如下:在WPF中使用用户控件库作为dll参考

  • UserControleLibraryProjectName/bin/debug/添加.dll文件在WPF应用程序内引用。
  • 通过将该对的App.xaml导入中使用的资源dictionarys到WPF应用内:

    <Application.Resources> 
    <ResourceDictionary> 
        <ResourceDictionary.MergedDictionaries> 
         <ResourceDictionary Source="pack://application:,,,/UserControleLibraryProjectName;component/ResourceDictionaryName.xaml" /> 
        </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    </Application.Resources> 
    
  • 引用照常资源字典条目中MainWindow.xaml:例如Style="{StaticResource style1}"

它编译没有错误,但在启动时崩溃,因为它无法找到引用的资源。 (System.Windows.Markup.XamlParseExceptionSystem.Windows.ResourceDictionary.Source) 我敢肯定,我引用资源字典的源标记的语法是错误的,但我尝试了很多不同的方法... Btw。用户控制库项目中没有错误,也没有参考字典条目的MainWindow.xaml - 当我将资源字典代码直接复制到app.xaml时,它工作正常。

你知道如何正确使用被引用的dll吗?

到目前为止,我发现问题: 用户控件库项目的.net版本比WPF-App项目的版本要高。由于产生的不兼容性,Visual Studio没有将.dll复制到WPF-App项目的bin/debug/文件夹中。 另外,我必须将参考用户控制库的构建类型设置为resource

建议寻找这个问题的答案,因为路径看起来不错,据我所知。

Loading merged ResourceDictionary from different assembly fails

你的源看起来正常。它是:

<ResourceDictionary Source="pack://application:,,,/[AssemblyName];component/[PathToFile].xaml" /> 

您还需要参考您的ClassLibrary在您的应用程序,以便为它工作。

如果这不起作用,首先检查您的项目属性,如果您的程序集名称与您在App.xaml中的名称相同。