在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.XamlParseException
在System.Windows.ResourceDictionary.Source
) 我敢肯定,我引用资源字典的源标记的语法是错误的,但我尝试了很多不同的方法... Btw。用户控制库项目中没有错误,也没有参考字典条目的MainWindow.xaml
- 当我将资源字典代码直接复制到app.xaml
时,它工作正常。
你知道如何正确使用被引用的dll吗?
到目前为止,我发现问题: 用户控件库项目的.net
版本比WPF-App项目的版本要高。由于产生的不兼容性,Visual Studio没有将.dll
复制到WPF-App项目的bin/debug/
文件夹中。 另外,我必须将参考用户控制库的构建类型设置为resource
。
你的源看起来正常。它是:
<ResourceDictionary Source="pack://application:,,,/[AssemblyName];component/[PathToFile].xaml" />
您还需要参考您的ClassLibrary在您的应用程序,以便为它工作。
如果这不起作用,首先检查您的项目属性,如果您的程序集名称与您在App.xaml中的名称相同。