如果主题更改,请更改 WP7 应用程序的背景

2023-12-10

如果用户更改主题,我需要更改应用程序的背景图像"Light" to "Dark"或在代码隐藏中反之亦然。我希望这些应该在页面已加载 event


@TimDams 向您指出了检测现在设置的主题的好方法之一,但我没有注意到有任何信息如何检测a change在应用程序运行时主题。用户可以启动您的应用程序,然后启动forward到菜单,更改主题,然后获取back到您的应用程序。虽然您可能认为您的应用程序将被逻辑删除,然后重新启动并重新导航到您的页面,并在所有页面加载的情况下进行完整的循环 - 但这并不是 100% 正确。

首先,PageLoaded 不是执行以下操作的好地方initialcheck-and-set-styles,因为,如果您调用该事件,则该页面可能已经呈现一次。如果我没记错的话,PageLoaded 是在第一次渲染后立即调用的。如果这是真的,那么您将必须更早地检测颜色,例如在 LayoutUpdated 中(警告:此事件是一个很棒的垃圾邮件发送者。我的意思是,它被调用了无数次。附加一个单次处理程序,您知道,这样第一次调用时会立即取消附加)。也许您可以在页面的 .ctor 中(就在 InitializeComponent 之后)执行此操作。或者在 OnApplyTemplate 或 MeasureOverride 中,或者至少在 ArrangeOverride 中——视觉效果应该在那里大部分/完全可用。

不过。我故意将“初始”一词“加粗”。在 Mango 中,多任务处理变得越来越普遍,但即使是 Mango 7.0 之前的版本也不能保证您的应用程序将被逻辑删除。例如,根据我在 7.0 早期的观察,从 WebBrowser 组件启动 MediaPlayer 不会对您的应用程序进行逻辑删除:) 如果您有时间阅读,请检查WP7从Tombstone恢复并返回页面有关“暂停”与“墓碑”的详细信息。

无论如何,如果您的应用程序“暂停”并且用户同时切换主题,我think(我没有检查)您的页面(在大多数情况下)将只是暂时隐藏,并且在返回到屏幕时,它可能不会被重新创建,也不会被重新(页面)加载。如果这是真的,那么您将没有那么容易解决的问题,因为您的应用程序可能会暂停,操作系统可能会重新主题,并且您的应用程序实际上会在任何时刻取消,而您同时收到的唯一事件是 。 ... App.Deactivated 和 App.Activated 的全局事件。有可能完全不会触发任何每页事件[但我没有检查过 - 在执行我下面建议的任何操作之前,请检查一下]。

If这种悲观的观点确实是正确的,在这些事件中,您将必须检测当前主题(->蒂姆的帖子),然后以某种方式通知您当前的页面主题是否已更改。如果您的 ViewModel 至少与应用程序的其余部分分开(应该如此:)),您有一个简单的选择:在该 ViewModel 中创建一组属性(dp 或 inotif),例如 Brush Background,画笔前景、画笔高光和其他您需要的内容,而不是在 XAML 中对颜色进行编码 - 绑定到这些属性。您可能想要为所有这些画笔和其他样式创建一个单独的类,比方说“pub class MyCurrentAppTheme”并将该道具保留在那里,并从 ViewModel 公开此类对象 - 无论如何。只需将您的颜色绑定到任何内容 - 但无论什么内容都是“逻辑上全局的”,并且可以从 App.Accticated 事件处理程序轻松访问。完成此操作后,在 App.Activated 中,检测当前主题以及是否已更改,因此检查 VM 中保存的所有颜色并适当设置它们。瞧,您的整个应用程序已正确重新着色。

但请注意,在渲染缓存的旧主题、刷新数据绑定对象和重新绘制新主题之间可能会出现一些短暂的闪烁和闪烁。我希望不会,但我感觉它可能会发生,特别是从快速切换工具(长按后按)返回时:我认为设备会在后台缓冲区中捕获应用程序的“最后一个屏幕截图”,并始终使用它应用程序被“最小化”以执行转换动画,显示快速应用程序切换概述等等。再次,我没有检查过,但我怀疑在这样的动画期间,页面内容是“实时”的,它可能非常对CPU/GPU资源要求很高。有人知道这方面的情况吗?在页面上放置一些循环动画,然后切换并检查快速切换概述,看看动画是否移动或停止,这可能是一个很好的测试!:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果主题更改,请更改 WP7 应用程序的背景 的相关文章

  • Silverlight 4 TextBox 中的字符大小写

    我正在编写 Silverlight 4 业务应用程序 但遇到了问题 我需要将文本框中的文本输入强制为大写 我从各个论坛了解到 Silverlight 没有实现 CharacterCasing 和 CSS 样式 还有其他方法可以实现这一目标吗
  • 如何为 asp.net MVC 5 配置 StructureMap

    我遇到以下错误 我的设置与 asp net mvc 4 类似 没有为此对象定义无参数构造函数 描述 安 当前网页执行期间发生未处理的异常 要求 请查看堆栈跟踪以获取有关的更多信息 错误及其在代码中的起源 异常详细信息 System Miss
  • C# 中的可选参数

    我在下面的代码中使用可选参数 但这显示错误 不允许使用默认参数说明符 任何人都可以帮助我 先生 public void getno int pvalu string pname 看起来有些答案中存在一些错误信息 C 4 中引入了可选参数 因
  • 重置 Windows Phone 照片上传

    我正在尝试使用 RestSharp 将照片上传到 Windows Phone 7 应用程序中的 REST api 进行获取 发布 post参数如下 photo 照片 编码为多部分 表单数据 照片 相册 id 现有相册的标识符 可以是一个事件
  • 实体框架:无效的列名称 *_ID 1

    我正在尝试为几个名为 的表实现 DbContextEmployee and Department 员工和部门之间的关系是多对一的 即部门可以有很多员工 下面是我设计的EntityFramework类 CodeFirst方法 Table Em
  • WCF 服务中的“即发即忘”

    我在 Azure 上有很多 WCF REST 服务 在某些 WCF 服务中 我向外部服务调用 Http 请求 例如发送电子邮件 短信 对非关键第三方服务的 http 请求 我不希望这阻碍我对客户电话的响应 需要一些关于在这种情况下使用的模式
  • C# 中的空“if”语句是否会导致错误或警告?

    让我从一个现实生活中的例子开始 顾客 Alex 刚刚注意到 RemovalProcessor 第 138 行有一些奇怪的东西 if Session Handler ExecutePrefetchTasks null Session Exec
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • 使用 NAudio c# 将 wma 音频流转换为 mp3 流

    我的任务是使用 NAudio 和 Lame 将 wma 音频流转换为 mp3 流 下面的代码可以很好地处理文件名 但我希望它可以使用内存流来完成 我在 NAudio 中搜索没有读取 wma 音频流的方法 NAudio 可以吗 public
  • C# 获取 Console.Writeline(" ") 说话 (" ")

    case Start VS Console WriteLine Starting Visual Studio s System Diagnostics Process Start devenv exe break 我怎样才能使用字符串输入来
  • 以编程方式设置 Windows Phone 7 音量

    有没有办法以编程方式更改 Windows Phone 7 的声音设置 启用或禁用约会和所有其他通知的声音 还可以更改全局音量 即 铃声 没有 API 可以启用您提到的任务 您可以使用 XNA API 调整应用程序中声音的音量 但这只是当前可
  • 如何从 Windows Phone 7 模拟器获取数据

    我有一个 WP7 的单元测试框架 它在手机上运行 结果相当难以阅读 因此我将它们写入 XDocument 我的问题是 如何才能将这个 XML 文件从手机上移到我的桌面上 以便我可以实际分析结果 到目前为止 我所做的是将 Debugger B
  • 计算斐波那契数

    我收到了这个很好的非递归函数 用于计算斐波那契序列 因此 我编写了一些 C 代码 并能够验证 1474 以内的所有数字是否正确 当尝试计算 1475 及以上时就会出现问题 我的 C 数学技能无法胜任找出不同方法的任务 那么 有人有更好的方法
  • 为 Windows 8 编写的应用程序可以在 Windows Phone 8 上运行吗?

    正如微软所说 Windows 8 和 Windows Phone 8 共享相同的代码库 如果我使用 Visual Studio 2012 RC 为 Windows 8 编写一个应用程序 我想知道我是否可以在 Windows Phone 8
  • 禁用 WP7 浏览器控件中的滚动功能?

    是否可以在 Windows Phone 7 1 中禁用 Web 浏览器控件中的滚动 我已经看到很多关于它的问题 Windows Phone 7 0 Silverlight 但还没有答案 有任何想法吗 有一个博客文章在这里 http www
  • XSD、泛型和 C# 类的困境

    我有以下简单的 XSD 文件
  • HttpClient 响应 ReadAsAsync() 未完全反序列化对象

    我正在尝试使用 Web API 客户端库来使用 Web 服务 我的问题是 当提交函数使用 POST 方法时 ReadAsAsync 似乎不想完全反序列化返回的对象 如果我得到字符串形式的响应并手动解串它就可以了 我收到一条 apmsgMes
  • Task.Factory.StartNew 或 Parallel.ForEach 对于许多长时间运行的任务? [复制]

    这个问题在这里已经有答案了 可能的重复 Parallel ForEach 与 Task Factory StartNew https stackoverflow com questions 5009181 parallel foreach
  • 演示如何在 C# 4.0 中使用新的“dynamic”关键字

    这是 4 0 版本中新的 C 未来 称为动态 告诉我如何在我的代码中使用它以及这个未来可以如何帮助我 相关问题 新的 dynamic C 4 0 关键字是否弃用了 var 关键字 https stackoverflow com questi
  • 多图像选择

    我正在使用 Windows Phone SDK 7 1 C 在 WP7 中制作应用程序 正在使用照片选择器任务 但我想选择 9 张图像 而这里我只能选择一张图像 如何一次选择 9 张图像 请帮助我 这是我的代码 public partial

随机推荐

  • R markdown / bookdown - 如何在摘要下方显示关键字?

    我在 Rmd 文件中定义了关键字 但它们在输出 PDF 中不可见 电流输出 预期成绩 当前 Rmd Rmd 文件的第一行如下所示 title No keywords within the output file abstract This
  • 快速计算大浮点数,例如 0.4 ^ 100000000 , 有什么想法吗?

    嗯 我有一个问题 我有一个特定的计算 结果超过 10 308 double net 中的最大值 无论如何我通过一个名为 BIGFLOAT 的库解决了这个问题http www fractal landscapes co uk bigint h
  • 在 IBM Worklight 推送通知中使用轮询时出现问题

    我正在使用 Android 设备尝试 WL 6 0 推送通知 推送通知工作正常 我也尝试过使用轮询 根据信息中心的文档 对于轮询 我们需要调用另一个过程 并在一定时间间隔后 当我们从该过程获得响应时 方法推送完成 如果我错了 请纠正我 因此
  • Java继承示例

    下面是继承的例子 class Parent Parent int a int b int c a b System out println Sum c void display System out println Return State
  • 如何在 iOS 中的 MKAnnotation 中添加更多详细信息

    我想在 MKAnnotation 中添加更多详细信息 例如位置标题 描述 日期 位置名称 因此需要四行 但我发现只有 2 个参数可以传递给 MKAnnotation 即标题和副标题 如何在地图上添加更多详细信息 请帮助我 提前致谢 看一下创
  • 实例化不可变的配对对象

    是否可以创建一个具有对合作伙伴对象的不可变引用的类 或者它必须是一个var我在创建后分配的 e g class PairedObject p PairedObject id String val partner PairedObject p
  • 无法在 Eclipse 中找到混淆的 Firebase 类

    是的 遗憾的是我正在开发一个仍在使用 Eclipse 进行的项目 我正在将其与 Firebase 集成 并且我阅读了有关使用 Eclipse 获取 aar 文件的内容 如何在 Eclipse 项目中使用 Firebase 云消息 除了以下情
  • 给定一个 x,y 坐标,我需要找到它下面的所有 html 元素

    我正在构建一个应用程序 我反复需要获取位于特定位置 例如相对于视口的 x y 下的 html 元素列表 我正在考虑以下方法 但没有一个令人满意 1 浏览 html 构建一个数据结构来跟踪每个元素的 x y 位置 x y gt 元素集 然后在
  • iOS 8 图像缩放和自动布局

    假设我有一个UIView只有一张图像位于顶部的中心UIView 我为图像提供了图像资源 如下所示 iPhone 4s 及更早版本 50x50 为正常 2x 适用于 iPhone 5 5c 5s 6 100x100 3x 适用于 iPhone
  • Scala泛型类支持多参数功能

    假设我有以下 Foo 类 它使用元组技巧支持任意数量的函数 abstract class Foo T R def pull T gt R 我可以使用以下语法定义子类 implicit def function2Tofunction1 T1
  • 拨号 tcp:不匹配的本地地址类型 172.29.4.175

    我使用以下代码收到此错误 拨号 tcp 不匹配的本地地址类型 172 29 4 175 知道如何解决这个问题吗 除了网上找不到任何有用的东西http oocms org question 763660 dial with a specifi
  • 添加 FirebaseUI 库和支持库时清单合并失败

    我正在使用 google firebase 实施身份验证 我收到此错误 如果可能的话 请有人提出解决方案并附上解释 以便我能理解 错误 任务 app processDebugManifest 执行失败 清单合并失败 来自 com andro
  • 在 R 中按 colSums 划分列

    我正在尝试缩放矩阵中的值 以便每一列加起来为一 我努力了 m matrix c 1 9 nrow 3 ncol 3 byrow T 1 2 3 1 1 2 3 2 4 5 6 3 7 8 9 colSums m 12 15 18 m m c
  • Redshift UDF逻辑问题

    我正在尝试编写 redshift udf 来验证时间戳 但是 它总是返回 false 有人可以解释一下为什么吗 create or replace function f Is timestamp sql VARCHAR 20000 retu
  • 如何使用 Interop 与 C# 将 *.ppt、*.pptx 文件另存为 *.wmv?

    我尝试用下面的代码来做到这一点 using Microsoft Office Core using PowerPoint Microsoft Office Interop PowerPoint using System IO using M
  • 如何使用 Java SDK 获取 AWS Quicksight 仪表板的嵌入 URL

    我想我了解获取 AWS Quicksight 仪表板的嵌入 URL 所需的所有步骤 并且我已经能够通过 AWS CLI 获取有效的 URL 如AWS docs 但是 我似乎无法通过 AWS Java SDK 特别是 v2 让它工作 似乎任何
  • 如何让Android应用程序在屏幕休眠时在后台运行?

    我正在开发一个跟踪应用程序 它通过每 3 秒获取用户当前位置来跟踪用户 当屏幕打开时 我能够获取经纬度值 但当屏幕休眠时 我无法获取数据 CODE Override public void onLocationChanged Locatio
  • 在VS 2017、MVC中添加服务引用

    如何在 VS 2017 MVC 中添加服务引用 我尝试找到 添加服务引用 按钮 但它不在那里 只有 添加引用 和 添加连接的服务 我之前在 VS 2013 中添加了服务引用 这很容易 但现在我为我的学校项目更改为 VS 2017 我不知道如
  • 使用 Gson 或 Jackson 压平 JSON 字符串,将包含各个级别键值的键制作为 Map

    我有一个关于以下问题的增强问题使用 Gson 或 Jackson 将 JSON 字符串展平为 Map 我的场景包括重复的键 因此上述问题中的解决方案会导致一些重复的键被覆盖 所以我正在考虑通过将每个级别的密钥组合在一起来构造密钥 那么如何实
  • 如果主题更改,请更改 WP7 应用程序的背景

    如果用户更改主题 我需要更改应用程序的背景图像 Light to Dark 或在代码隐藏中反之亦然 我希望这些应该在页面已加载 event TimDams 向您指出了检测现在设置的主题的好方法之一 但我没有注意到有任何信息如何检测a cha