【问题标题】:Dialog service in WinRT / custom modal dialog in MVVM architectureWinRT 中的对话框服务/MVVM 架构中的自定义模式对话框
【发布时间】:2013-12-14 10:46:03
【问题描述】:

我的应用有一个简单的搜索屏幕。其中一个参数是“半径”(与用户当前位置的距离)。半径选择器绑定到 ViewModel 上的“Radius”属性。

ViewModel 正在监听 Radius 属性的变化,当它发生变化时,如果用户之前没有选择他们的位置,我想调用一个对话服务。

所以我希望应用使用 MVVM Light 的消息服务来监听来自 ViewModel 的消息,如果它收到消息“selectlocation”,它应该显示一个“位置选择器”UI 作为模式对话框。

使用 MessageDialog 很容易。不知何故,它创建了它的 UI 并将其覆盖在屏幕上的任何内容之上。我该怎么做?但是有一个完全定制的模态对话框?

我可以创建一个用户控件并将其托管在页面中,然后让页面监听消息,然后显示用户控件,但是,我更喜欢在全局级别。

在伪代码中,我希望有一个对话框服务来执行此操作:

void SelectLocation(onSuccessCallback, onCancelCallback)
{
    Window.Current.ShowDialog(new LocationSelectorUserControl(onSuccessCallback, onCancelCallback));
{

与 MessageDialog 几乎相同,但具有自定义 UI。

有什么办法吗?

【问题讨论】:

    标签: c# xaml mvvm windows-runtime


    【解决方案1】:

    抽象地说,要提供类似的东西,您必须创建一个空白窗口,即:

    • 在屏幕上居中
    • 声明自己最顶层
    • 禁用父窗口直到它关闭
    • 实现特定的ShowDialog方法重载,返回值你想获取

    【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多