設定によって Windows Phone 7 のアプリケーション スタイルを切り替える方法を開発しようとしています。スタイルは次のようになります。
- コア スタイルは WP7Style_Dark.xaml と WP7Style_Light.xaml で分離され、定義されています。
- 残りのスタイルは Styles.xaml で宣言されています。
次のコードを使用して、App.xaml.cs のテーマを接続します。
var dictionaries = Resources.MergedDictionaries;
dictionaries.Clear();
string source = String.Format("/CommonUI;component/Resources/{0}.xaml", value == AppStyleSet.Light ? "WP7Style_Light" : "WP7Style_Dark");
//base styles
var themeStyles = new ResourceDictionary {Source = new Uri(source, UriKind.Relative)};
dictionaries.Add(themeStyles);
var generalStyles = new ResourceDictionary();
generalStyles.Source = new Uri("/CommonUI;component/Resources/Styles.xaml",UriKind.Relative);
dictionaries.Add(generalStyles);
実行時に generalStyles.Source を設定すると、例外がスローされます (これは、「未指定エラー」を示す System.Exception です)。Styles.xaml を空にすると例外がなくなることがわかりましたが、もちろんこれは解決策ではありません。
私は何をすべきか?
更新 2:スタック トレースをねじ込みます。ここで問題を絞り込みます。
テーマ スタイルは、テーマの色を定義します。一般的なスタイルは、このようなバインディングに出会うまで正常にロードされ続けます
... <Setter Property="Color" Value="{StaticResource HighlightColor}" />
そのため、StaticResource は解決できず、例外がスローされます。これは何とか回避できないでしょうか?