【发布时间】:2013-03-01 04:21:40
【问题描述】:
这是场景:
我一直在使用 VS 2010 使用 MEF 编写相当大的 WPF 项目。此解决方案中有多个项目,我的所有样式都有一个 ResourceDictionary。
AppStyles.xamlResourceDictionary 位于我的启动项目中,它包含了我对该项目的所有样式。在我的App.xaml 中,我有以下内容:
<Application x:Class="Dionysus.Shell.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DispatcherUnhandledException="UnhandledException" ShutdownMode="OnMainWindowClose">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="AppStyles.xaml"/>
</ResourceDictionary>
</Application.Resources>
现在,这一切都在 VS 2010 的设计模式下完美运行,当我调试时,正确的样式被应用于我的所有控件。但是我最近切换到VS 2012,设计器不再工作了!当我调试它时,它工作得很好,但每当我使用我的一种样式时,如下所示:
<Button Name="btnForward" Height="23" Margin="10,0" Style="{StaticResource DionysusButton}" Grid.Row="2" Grid.Column="0"/>
我在 VS 2012 设计器中收到以下错误:
The resource "DionysusButton" could not be resolved.
我不知道为什么会发生这种情况,我已将我的 Style 重命名,甚至 ResourceDictionary 也无济于事。
我应该在 VS 2012 中以不同的方式执行此操作还是 VS 2012 存在问题?
我发现很多帖子说将我的 AppStyles.xaml ResourceDictionary 的 x:Name 属性更改为 x:Key 将解决此问题,但我不能这样做,因为它不是 @ 的有效选项987654334@.
提前感谢
-- 更新
我正在使用 Marc 的答案,除了默认样式外,一切似乎都进展顺利。我有以下风格:
<Style TargetType="DataGrid" x:Name="DataGridStyle"/>
这是我的主要ResourceDictionary:
<ResourceDictionary x:Name="Main"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles/AppStyling.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="DataGrid" BasedOn="{StaticResource DataGridStyle}"/>
当我不在我的主要ResourceDictionary 中添加Style 标记时,它可以正常工作,但该样式显然并未应用于所有项目。当我添加它时,我得到以下异常:
在“System.Windows.Markup.StaticResourceHolder”上提供值引发异常
想法?
【问题讨论】:
-
你提到了
x:Name,但你没有说这在哪里是相关的——你的任何代码中都没有提到它。你也没有说为什么你不能这样做,这可能有用! -
对不起!我已经更新了我的问题。
-
不,想法。据我所知,一切看起来都很好。例外是一无所有。 DataGridStyle 是空的,还是那里有问题?尝试删除主字典的 x:Name。反正你不应该需要它...
-
好的,我发现了异常,这是由于我的风格使用
x:Nameproeprty 而不是x:Key。但样式仍未应用于我的所有DataGrid控件。
标签: wpf visual-studio-2012 styles resourcedictionary