Xamarin.Forms MVVM получает ответ от DIsplayAlert - PullRequest
0 голосов
/ 26 сентября 2018

Как правильно работать с DisplayAlert() из представления MVVM?

У меня есть экран и ViewModel для него.Внутри ViewModel я определил некоторые Actions:

class PageViewModel : INotifyPropertyChanged
{
    public Action DisplayDataSavedPromt;
    public event PropertyChangedEventHandler PropertyChanged = delegate { };

    public ICommand SaveCommand { protected set; get; }

    public PageViewModel()
    {
        SaveCommand = new Command(OnSubmit);
    }

    public void OnSubmit()
    {           
        DisplayDataSavedPromt();
    }

}

А потом я звоню из View Page.cs:

public Page ()
{
    var vm = new PageViewModel();
    this.BindingContext = vm;
    vm.DisplayDataSavedPromt += () => DisplayAlert("Success", "Your data are saved", "OK");
    InitializeComponent ();
}

И все работает нормально, но я могу 'не понимаю, как я могу связать некоторые действия с кнопками этого оповещения?Например, когда пользователь нажимает кнопку «ОК» внутри оповещения, откройте новую страницу.

Должен ли я сделать это как-то внутри ViewModel или внутри представления?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете попробовать это в вашем представлении модель

var res = await App.Current.MainPage.DisplayAlert("Success", "Your data are saved", "Ok", "Cancel");

if(res){//logic} else {//logic}
0 голосов
/ 26 сентября 2018

Вам нужно дождаться действия пользователя, а затем проанализировать результат, например:

var result = await DisplayAlert("Success", "Your data are saved", "Ok", "Cancel"); 

//User pressed OK
if(result == true) 
{
    // do your logic
}
else // User pressed Cancel
{ 
    // do your logic
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...