【问题标题】:Windows 8 like modal dialog using WPFWindows 8 类似使用 WPF 的模态对话框
【发布时间】:2012-09-05 10:18:17
【问题描述】:

我正在开发一个具有 Metro 外观的 WPF-MVVM (.Net 4.0) 应用程序(它只是外观,它不是 Metro 应用程序。) 我需要显示一个类似于 Windows 8 的消息框,该消息框会在用户通过单击是/否/取消(或任何按钮)删除该消息框之前阻止用户的操作。

我遇到了这个非常棒的article,并暂时认为我已经找到了解决方案。但这有其自身的缺点。它只是阻止用户通过鼠标单击与后面的控件进行交互。但是,用户可以使用 Tab 键返回到后面的按钮并单击它们(按 Enter)。

我想到了很多事情:

  • 我应该选择自定义装饰器并使用 hitTestable 属性吗?

  • 或者我应该放置一个控件并使用它的可见属性。

在采用任何方法之前,如果有人过去做过类似的事情,我想在这里向精彩的社区提出我的问题,并为我提供一些指针/参考/方法。

有人可以建议实现这一目标的方法吗?请注意,如果可以解决目的,我将很乐意使用 prism 或任何其他开源软件,但必须定制窗口。 如果您觉得这个问题太愚蠢,请原谅。请原谅我的无知。感谢您阅读本文。

【问题讨论】:

  • 看看wpftoolkit.codeplex.com/… 中的 ChildWindow ...您应该能够重新设置“窗口”的样式以使其看起来像您想要的那样。

标签: wpf mvvm dialog prism


【解决方案1】:

我最近遇到了一个类似的问题,我使用 DialogPresenter 解决了它,如下所述:

http://www.codeproject.com/Articles/36516/WPF-Modal-Dialog

我不得不在那里和那里做一些调整,但总的来说它工作正常,我现在有一个很好的方式来显示对话框!

【讨论】:

  • 谢谢!!我刚刚开始在我的项目中使用这种方法。似乎只需稍加改动就可以了!
  • 仅供参考,我唯一需要添加的是 Dispatcher.PushFrame 在开头,所以对话框是“真正的”模态的(否则它只是作为一个覆盖出现,让你的后台程序正常运行)
【解决方案2】:

有更好的方法

            var dialog = new MessageDialog("Select Social network is already  authorised!");
            dialog.ShowAsync();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-27
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    相关资源
    最近更新 更多