我有两个WPF项目的解决方案:主要和次要。
在Primary项目中,名为PrimaryView的Window实例化一个名为SecondaryControl的UserControl,在Secondary项目中定义。
SecondaryControl使用SecondaryStyle,它在SecondaryResourceDictionary中定义(正如您可能已经猜到的那样,在SecondaryProject中定义)。
事实是:当我尝试运行解决方案时,我得到一个XamlParseError
,并挖掘InnerExceptions我最终找到了罪魁祸首ResourceNotFound
错误。
所以我的问题是:
如果在同一个程序集中定义了SecondaryControl及其SecondaryStyle,为什么我不能将它实例化为PrimaryAssembly?
我应该以某种方式使SecondaryStyle可用于PrimaryProject命名空间吗?为什么呢?
答案 0 :(得分:1)
我试着通过解释它在我的项目中如何运作来帮助你。 一个单独的程序集包含一个公共控件和公共资源字典,如下所示:
<强> CommonResources.xaml 强>
aid
<强> SomeCommonControl.xaml 强>
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- Some resources -->
</ResourceDictionary>
我可以使用其他程序集和WPF项目中的此控件和资源,如下所示:
<UserControl x:Class="YourAssembly.SomeCommonControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/YourAssembly;component/CommonResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<!-- Some specific content -->
</UserControl>
我希望这会对你有所帮助。