我正在尝试开发一种根据设置切换 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 无法解析并引发异常。可以以某种方式避免这种情况吗?