我最近将我的 Silverlight 应用程序拆分为几个较小的项目。
我已将所有包含我的样式的资源字典移到一个单独的项目(“Application.Themes”)中,然后从我的主项目中的 App.xaml 文件中引用这些。
这适用于主项目,但是在这些资源字典中引用样式的所有其他项目在设计器中抛出“对象引用未设置为对象的实例”异常,尽管它们确实编译和运行没有任何问题并且具有正确的样式.
我已经向每个单独的项目添加了一个 App.xaml 文件,它引用了与我的主 App.xaml 文件相同的字典,这没有任何区别。
是否有正确的方法来引用另一个项目中允许使用设计器的资源字典?
编辑:
这里有一些更多信息和一些代码片段来演示我遇到的问题
我在这个项目中有一个名为“Themes”的样式项目我有几个定义项目所有样式的字典。
在我的主要 App.xaml 中,我有以下内容
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes;component/Styles/CoreStyles.xaml"/>
<ResourceDictionary Source="/Themes;component/Styles/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
如果我在主项目中引用样式,它们可以正常工作。但是,即使这些项目引用了 Themes 项目,它们也不适用于任何其他项目。
我试图将以下内容放在每个 UserControl 的开头,以便在设计时解析样式,但是它仍然无法解析项目中的样式。
<UserControl>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes;component/Styles/CoreStyles.xaml"/>
<ResourceDictionary Source="/Themes;component/Styles/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Additional Control Specific resources -->
</ResourceDictionary>
</UserControl.Resources>
<!-- The following resources are defined in Styles.XAML and don't resolve at design time and throw errors -->
<TextBlock Text="Header Test"
FontFamily="{StaticResource HeaderFontFamily}"
Foreground="{StaticResource StrongBrush}">
</UserControl>
我的 styles.xaml 看起来与此类似。
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:behaviors="clr-namespace:Minerva.Presentation.Behavior;assembly=Minerva.Presentation"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
<SolidColorBrush x:Key="StrongBrush" Color="{Binding Source={StaticResource MetroColors}, Path=Palette.StrongColor}" />
<FontFamily x:Key="HeaderFontFamily">Segoe UI Light, Lucida Sans Unicode, Verdana</FontFamily>
</ResourceDictionary>