在我的WPF项目中,我将用户控件保留在一个单独的库项目中。该用户控件可以通过访问另一个XAML文件中的资源,如下所示:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/ViewResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Local styles here -->
</ResourceDictionary>
</UserControl.Resources>
资源文件ViewResources.xaml位于控件库项目中名为Resources的文件夹中。它具有默认的构建操作(Page)和自定义工具(MSBuild:Compile)。
问题是当我在我的WPF应用程序中引用控件库并使用用户控件时,在运行时我会得到以下XamlParseException:
Set property 'System.Windows.ResourceDictionary.Source' threw an exception.
...它包装了 IOException 异常:
Cannot locate resource 'resources/viewresources.xaml'.
我该如何修复这个问题?我尝试将资源文件的构建操作更改为"Content"并将其复制到输出目录(对于文件和类似的“愚蠢”资源有效),但是没有用。而且,在用户控件中不起作用。
有没有更好的指定路径的方法?
我是否需要将资源文件移动到应用程序项目中(我宁愿不这样做,因为它属于用户控件的领域)。
Themes\AvalonDockTheme.xaml
更改为pack://application:,,,/Themes/AvalonDockTheme.xaml
。感谢Tor! - Matt DeKrey<ResourceDictionary Source="/AssemblyName;component/Themes/Generic.xaml"/>
这对我有用。 - Adam