我正在制作一个Windows Phone 7应用程序,但是在暗色和亮色主题方面有些困惑。
在全景视图中,您经常设置背景图像。问题在于很难制作适合暗色和亮色主题的图片。我们该如何处理?
有没有一种方法可以强制使用暗色/亮色主题来显示全景视图?这将避免制作特定于主题的全景背景图片。如果有,我该怎么做?我在 C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v7.0\Design
中找到了XAML文件。如果这是正确的操作方式,那么我该如何将它们导入到我的全景视图中呢?
或者,如果没有办法(或者这样做是错误的)来强制使用暗色/亮色主题:如何编写条件XAML以设置正确的资源?现在我有以下XAML(default.xaml),它可以与暗色主题一起正常工作:
<ImageBrush x:Key="PageBackground" ImageSource="Resources/PageBackground.png" Stretch="None" />
<ImageBrush x:Key="PanoramaBackground" ImageSource="Resources/PanoramaBackground.png" Stretch="None" />
但是,当我使用浅色主题时,黑色控件和黑色文本与我的深色背景图片很难辨认。因此,我制作了不同的图片,可以通过以下方式使用:
<ImageBrush x:Key="PageBackground" ImageSource="Resources/PageBackgroundLight.png" Stretch="None" />
<ImageBrush x:Key="PanoramaBackground" ImageSource="Resources/PanoramaBackgroundLight.png" Stretch="None" />
现在我的问题是根据当前主题声明正确的事物来使XAML有条件地生效。
我在互联网上找不到相关的方法。我希望不使用代码或后台代码,因为我相信XAML能够做到这一点(我只是不知道如何实现)。
编辑:加载xaml文件作为ResourceDictionary的代码片段
string xaml = null;
StreamResourceInfo xamlInfo = Application.GetResourceStream(new Uri("light.xaml", UriKind.Relative));
using (StreamReader sr = new StreamReader(xamlInfo.Stream))
xaml = sr.ReadToEnd();
dic = (ResourceDictionary)XamlReader.Load(xaml);
this.Resources.MergedDictionaries.Add(dic);
InitializePhoneApplication();
之后,如果浅色主题测试通过,则动态加载light.xaml。这不是完整的XAML方式,但只涉及5行代码。 - SandRock