是否可以从 MVVM 弹出 DisplayPromptAsync

Is it possible to popup DisplayPromptAsync from MVVM

我一直在为这个问题苦苦思索一分钟,需要寻求帮助...是否可以从 MVVM 弹出 DisplayPromptAsync?我的所有代码都运行良好,但一些“障碍”要求我最终转向 MVVM 来解决;但是我有 2 个实例,我想弹出并提示用户输入,然后我使用提交的值。如果我正确阅读文档 DisplayPromptAsync 只能在页面中使用吗?我当然不想编写单独的页面来提出问题,然后用户对每个问题进行回复。我不能只使用 1 页并询问所有三个,因为用户可能只需要询问 1 个问题。 UI 弹出这个让用户回答并继续完成这一壮举的过程非常简单。

有什么想法吗?

TIA! 瑞克...

只使用对当前页面的引用

App.Current.MainPage.DisplayPromptAsync()

您可以通过多种方式实现这一目标。

第一个是 App.Current.MainPage 弹出警报,正如 Jason 在他的回答中提到的那样:

public class myModel { 

    public myModel()
    {
        App.Current.MainPage.DisplayPromptAsync("title", "message");
    }
}

另一种方法是,您可以使用 MessagingCenter 通知页面弹出警报。

模型中:

MessagingCenter.Send<MainPage>(this, "showAlertNotify");

在页面中:

public MainPage()
{
    InitializeComponent();

    MessagingCenter.Subscribe<MainPage>(this, "showAlertNotify", (sender) =>
    {
        // Do something whenever the "showAlertNotify" message is received
        this.DisplayPromptAsync("title", "message");
    });
}

您还可以阅读通过使用界面执行操作。