gpt4 book ai didi

c# - 如何将 AlertDialog 与 mvvmcross 集成

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:15 25 4
gpt4 key购买 nike

我正在尝试使用 android alertdialog 向用户显示通知(消息)。我在项目中使用的模式是 MVVM(MVVMCross)。

我正在将消息传递给 View 模型属性,例如:

private string _messageHeader;

public string MessageHeader
{
set { _messageHeader = value; }

get { return _messageHeader = "A test messageaHeader"; }
}

private string _message;

public string Message
{
set { _message = value; }

get { return _message = "A test message"; }
}

然后我从 View 中调用我的属性并传递然后将它们传递给警报对话框。

  public StockSearchMasterViewModel StockSearchMasterViewModel
{
get { return (StockSearchMasterViewModel)base.ViewModel; }
set { base.ViewModel = value; }
}



AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alertDialog = builder.Create();

alertDialog.SetTitle(StockSearchMasterViewModel.MessageHeader);
alertDialog.SetMessage(StockSearchMasterViewModel.Message);
alertDialog.SetButton("OK", (s, ev) => Command.Execute(null));
alertDialog.SetButton2("Cancel", (s, ev) => alertDialog.Hide());
alertDialog.Show();
.
.
.

来自 viewmodel 的新消息,新的 alertdialogpopup

  alertDialog.SetTitle(StockSearchMasterViewModel.MessageHeader2);
alertDialog.SetMessage(StockSearchMasterViewModel.Message2);
alertDialog.SetButton2("OK", (s, ev) => alertDialog.Hide());
alertDialog.Show();

我在这里想要实现的是,当用户在对话框中按下 OK 时,ICommand 将在 View 模型中执行一个方法,如果某些条件有效或无效,将出现第二条消息。我的问题是第二条消息。我不知道如何将它再次传递给警报对话框,因为警报对话框不会停止 .Show() 的主线程(假设这是一个异步操作)并且会继续运行直到函数完成其循环。

最佳答案

我发现最完整的方法是使用交互请求模式 - 请参阅:MvvmCross Dialog

但是,还有其他方法可用 - 并且更容易遵循 - 特别是使用 Messenger 或注入(inject)自定义 IDialogService 接口(interface)。有关这些的更多信息,请参阅 Display Error or Information from ViewModel to View

关于c# - 如何将 AlertDialog 与 mvvmcross 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19488470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com