我正在Microsoft Visual Studio 2012 IDE中使用基于MahApps.Metro开源工具包的C#和XAML设计应用程序。除了App.xaml文件中引用的隐式定义样式外,一切正常。 App.xaml文件中资源字典的代码如下所示:
<Application x:Class="MyApplication"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/MainDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
MainDictionary.xaml文件中的代码如下所示:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colours.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
<ResourceDictionary Source="/Resources/Icons.xaml" />
<ResourceDictionary Source="/Resources/stringTable.xaml" />
<ResourceDictionary Source="/Styles/controls.styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
MahApps.Metro项目中的Controls.xaml文件包含许多可用的标准控件的隐式定义(参考代码的Git/Source),以及一些颜色/主题定义。这是破坏的词典。
这种格式在我的MainWindow.xaml文件中运行正常,其中所有隐式样式在所有默认控件上都能正常工作,但是当它位于我的App.xaml文件中时会中断。当我在App.xaml文件中加载ResourceDictionaries时,我仍然可以访问ResourceDictionaries中的所有资源(使用DynamicResource),我甚至可以在控件上显式定义样式,因此通过该逻辑,我可以将问题追溯到要做的事情使用App.xaml文件中的隐式声明。
我发现了一些相关问题(Reference One),但没有一个问题可用或可行的解决方案。
在安装了MahApps.Metro(参考:http://mahapps.com/MahApps.Metro/)的窗口,一些随机控件以及位于App.xaml文件中的所有ResourceDictionary引用的测试应用程序中,这是完全可重现的。
另一个奇怪的事情是,在VS 2012 XAML Designer视图中,所有隐式定义的控件和颜色都正确加载,但是一旦应用程序启动它就会中断(但不会崩溃或输出任何错误)。
对于这个项目,我需要这些资源全局可用(在项目中的所有文件上),所以如果除了使用App.xaml文件之外还有其他方法可以尝试。我愿意尝试一下。 / p>
谢谢。