在XAML Metro应用程序中弹出的目的是什么?

本文关键字:是什么 XAML Metro 应用程序 | 更新日期: 2023-09-27 17:54:14

我需要一个模态对话框为我的应用程序,但它似乎没有类似的XAML Metro应用程序。有人建议一个弹出。

我试过了,似乎底层UI仍然响应…所以Popup不是模态的

我认为OK可能是它的目的是在屏幕的中心弹出不管其他布局和它出现-不是。弹出窗口是绑定到一个布局和其他一切。如果它是在一个网格中,它将被放置在第0行和第0列,而不是在中心。

所以我可能错过了什么。请帮忙理解。我找不出它和Grid有什么不同。

弹出的目的是什么?它与其他内容控件有何不同?

在XAML Metro应用程序中弹出的目的是什么?

差异:

  1. 你不必把它作为另一个控件的子控件。尽管在这种情况下,您可能会遇到遍历可视树的问题,并专注于TextBox不会移动其内容,因此虚拟键盘可能会覆盖其内容,或者其装饰器内容可能会与不在弹出框上的装饰控件失去对齐。

  2. 它的内容树被呈现在任何其他内容的顶部,并且(我相信)不会被父控件的Clip区域剪切。

  3. 你通常需要手动设置其宽度和高度时,第一次显示或父布局(或大小)的变化,特别是在最常见的场景之一,当你设置其宽度和高度的父(或窗口)的宽度和高度。

也就是说,模态对话框是糟糕的UI,应该避免。如果您想要显示对话框或使用其他方法,您可以简单地导航到另一个页面。(几乎)没有什么比在UI上显示一个模态对话框更烦人的了,它看起来是启用的,但却不响应输入。

我需要一个模态对话框为我的应用程序,但它似乎没有类似的XAML Metro应用程序。有人建议一个弹出。

从Windows 8.1开始,实际上有一些类似于模态对话框的东西,你可能想看看:它叫Flyouts

显然,Windows 8.1中缺少带有自定义内容的模态弹出窗口。一个可能的解决方法:

  1. 使用Popup控件(本身不是模态)
  2. 设置背景为半透明
  3. 将其拉伸到整个屏幕
  4. 将实际的弹出内容放置在该容器中,并在其周围留出一些空间

现在,父页面是可见的,但变暗了,并且由于Popup覆盖它而无法访问。