public static async Task <MessageBoxResult> Show(Window parent, string title, string text) { var messageBoxView = new MessageBoxView { Title = title }; messageBoxView.FindControl <TextBlock>("Text").Text = text; var buttonPanel = messageBoxView.FindControl <StackPanel>("Buttons"); var result = MessageBoxResult.Cancel; void AddButton(string caption, MessageBoxResult r) { var button = new Button { Content = caption }; button.Click += (_, __) => { result = r; messageBoxView.Close(); }; buttonPanel.Children.Add(button); result = r; } AddButton("Ok", MessageBoxResult.Yes); AddButton("Cancel", MessageBoxResult.Cancel); await messageBoxView.ShowDialog(parent); return(result); }
private async void WhenClosing(object?o, CancelEventArgs args) { var vm = (MainWindowViewModel)DataContext; if (vm.Score.ScorePagesVM.Count == 0) { return; } args.Cancel = true; var result = await MessageBoxView.Show(this, "Closing ?", "You may have unsaved work. Do you really want to exit ?"); if (result != MessageBoxView.MessageBoxResult.Yes) { return; } Closing -= WhenClosing; Close(); }