gpt4 book ai didi

xaml - WP7 项目中的主题感知 XAML 资源

转载 作者:行者123 更新时间:2023-12-03 05:34:12 24 4
gpt4 key购买 nike

我正在制作 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);

最佳答案

要强制使用深色或白色主题,您确实可以使用您指出的文件夹中定义的样式。将您需要的规则复制并粘贴到 App.xaml 中(只需 PhoneForegroundColor、PhoneBackgroundColor 和相关画笔就是一个好的开始)。

保持“主题感知”并为浅色和深色主题加载不同的图像可能会更好。这是一篇解释如何执行此操作的文章:http://blog.jayway.com/2010/12/16/theme-aware-panorama-background-in-windows-phone-7/

关于xaml - WP7 项目中的主题感知 XAML 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com