【问题标题】:Unloaded event not called in Secondary View in UWP app targeting 10240未在针对 10240 的 UWP 应用的辅助视图中调用未加载事件
【发布时间】:2019-03-30 07:10:35
【问题描述】:

按照这个例子,https://docs.microsoft.com/en-us/windows/uwp/design/layout/show-multiple-views 如果我在辅助视图中打开任何视图,在辅助窗口中打开的页面的 Unloaded 事件永远不会被调用。所以有很多对象没有正确处理,因为我在 Unloaded 事件中有一些清理代码。

我知道我可以在视图中使用 Consolidated 事件来了解辅助视图何时关闭(因为 Closed 事件永远不会在窗口中调用)但我不能使用它,因为我有一些自定义按钮需要在关闭辅助视图之前卸载。我可以做一些脏补丁,但我想避免这种情况。有什么想法吗?

【问题讨论】:

  • 您在最新版本 17763 中尝试过吗?
  • 我不能,必须定位到 10240

标签: c# uwp uwp-xaml


【解决方案1】:

但我不能使用它,因为我有一些自定义按钮需要在关闭辅助视图之前卸载。

关闭窗口时不会触发 unloaded 事件。我不明白你为什么不能使用 Consolidated 事件。根据您的描述,您只是想在关闭窗口之前进行一些清洁操作。 ApplicationView.Consolidated Event 发生在窗口从最近使用的应用程序列表中删除时,或者如果用户对其执行关闭手势。它完全符合您的要求。

您可以查看官方MultipleViews sample。它实现了ViewLifetimeControl.cs 来控制您的辅助视图,并实现释放事件和相关功能以跟踪辅助视图并在关闭时销毁对象。

【讨论】:

  • 因为我有很多自定义 UI 元素需要在其中运行一些逻辑,并且它们依赖于未触发的 Unloaded 事件。我不明白为什么关闭窗口时未触发 Unloaded 事件。我使用 Consolidated 事件来清理 View 和 ViewModel。正常的事情是假设当 Window 关闭时,UI 元素会调用 Unloaded 事件,然后会触发 Closed 事件。但是,仅调用了 Window 上的 Consollidated 事件,从我的角度来看,这很容易产生误导。
  • 我已经检查了该示例,并且我已经有一个类来跟踪辅助视图,但是关闭一个窗口应该触发所有 UI 元素中的 Unloaded 事件,然后触发 Closed 事件窗户……
  • @etragu 这是一个已知问题。相关团队正在对此进行调查。此外,你能告诉我为什么你必须留在 10240 吗?
  • 因为我们有一些客户出于商业原因,他们对旧版本的 10240 感到满意。这基本上是一些人仍在使用 Windows XP 的原因。
猜你喜欢
  • 2015-06-24
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多