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/ソースを参照) と、いくつかの色/テーマの定義が含まれています。これは壊れつつある辞書です。
この形式は MainWindow.xaml ファイルでは正常に機能します。すべての暗黙的なスタイルはすべての既定のコントロールで正常に機能しますが、App.xaml ファイル内にあると機能しなくなります。ResourceDictionaries 内のすべてのリソースに (DynamicResource を使用して) アクセスでき、それが App.xaml ファイル内に読み込まれている場合でも、コントロールにスタイルを明示的に定義することもできるため、そのロジックによって問題を追跡して何かを行うことができます。 App.xaml ファイル内の暗黙的な宣言を使用します。
関連する問題をいくつか見つけました ( Reference One ) が、実行可能な解決策や実用的な解決策はありません。
これは、MahApps.Metro がインストールされたテスト アプリケーション (参照: http://mahapps.com/MahApps.Metro/ )、ウィンドウ、いくつかのランダム コントロール、および App.xaml ファイル内にあるすべての ResourceDictionary 参照で完全に再現可能です。
これに関するもう 1 つの奇妙な点は、VS 2012 XAML デザイナー ビューでは、暗黙的に定義されたすべてのコントロールと色が正しく読み込まれますが、アプリケーションが開始されるとすぐに壊れます (ただし、クラッシュしたり、エラーを出力したりしません)。
このプロジェクトでは、これらのリソースをグローバルに (プロジェクト内のすべてのファイルで) 利用できるようにする必要があるため、App.xaml ファイルを使用する以外にそれを行う別の方法があれば、喜んで試してみたいと思います。
ありがとうございました。