这是场景:
我一直在使用 VS 2010 使用 MEF 编写相当大的 WPF 项目。这个解决方案中有多个项目,我有一个ResourceDictionary
适合我所有风格的项目。
AppStyles.xaml
ResourceDictionary
位于我的启动项目中,它包含我对该项目的所有样式。在我的内部,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.
我不知道为什么会发生这种情况,我已经重命名了 my Style
,甚至ResourceDictionary
无济于事。
我应该在 VS 2012 中这样做吗?或者这是 VS 2012 的问题?
我发现很多帖子都说更改x:Name
my AppStyles.xaml
ResourceDictionary
to的属性x:Key
可以解决这个问题,但我不能这样做,因为它不是ResourceDictionary
.
提前感谢
- 更新
我正在使用 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}"/>
当我不在Style
我的 main 中添加标签时,ResourceDictionary
它可以正常工作,但是该样式显然并未应用于所有项目。当我添加它时,我得到以下异常:
在“System.Windows.Markup.StaticResourceHolder”上提供值引发异常
想法?