public int Show(string dialogKey, Dictionary <string, object> parameters, Action dialogDismissed) { int id = _dialogId++; parameters = parameters ?? new Dictionary <string, object>(); parameters.Add("DialogId", id); string parametersKey = NavigationService.StoreMessageDialogParameters(dialogKey, parameters); IMvvmDialog dialog = ShowDialog(dialogKey); dialog.ParametersKey = parametersKey; dialog.Dismissed += OnDialogDismissed; _dialogStack.Add(new Tuple <IMvvmDialog, Action, int>(dialog, dialogDismissed, id)); dialog.Show(); return(id); }
private void OnDialogDismissed(object sender, EventArgs eventArgs) { IMvvmDialog dialog = sender as IMvvmDialog; if (dialog == null) { return; } dialog.Dismissed -= OnDialogDismissed; Tuple <IMvvmDialog, Action, int> savedTuple = _dialogStack.FirstOrDefault(x => Equals(x.Item1, dialog)); if (savedTuple != null) { _dialogStack.Remove(savedTuple); if (savedTuple.Item2 != null) { savedTuple.Item2(); } } }