gpt4 book ai didi

silverlight - 在单独的项目中引用资源字典

转载 作者:行者123 更新时间:2023-12-02 02:14:51 26 4
gpt4 key购买 nike

我最近将我的 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>

最佳答案

为样式/主题项目创建一个程序集,以便其他项目可以引用它。为了使用 MergedDictionaries 在 app.xaml/page.xaml 将这些样式合并到应用程序中

<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Assembly;component/Stylesorthemes.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

希望这是有用的。

关于silverlight - 在单独的项目中引用资源字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11116033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com