diff --git a/src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/AvaDialogService.cs b/src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/AvaDialogService.cs index 4084b7e..626cb81 100644 --- a/src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/AvaDialogService.cs +++ b/src/Lemon.ModuleNavigation.Avaloniaui/Dialogs/AvaDialogService.cs @@ -17,7 +17,7 @@ public void Show(string name, IDialogParameters? parameters = null, Action? callback = null) { - ShowCore(name, null, false, parameters, callback); + ShowCore(name, null, false, parameters, callback).Wait(); } public void Show(string name, @@ -25,25 +25,25 @@ public void Show(string name, IDialogParameters? parameters = null, Action? callback = null) { - ShowCore(name, windowName, false, parameters, callback); + ShowCore(name, windowName, false, parameters, callback).Wait(); } - public void ShowDialog(string name, + public async Task ShowDialog(string name, IDialogParameters? parameters = null, Action? callback = null) { - ShowCore(name, null, true, parameters, callback); + await ShowCore(name, null, true, parameters, callback); } - public void ShowDialog(string name, + public async Task ShowDialog(string name, string windowName, IDialogParameters? parameters = null, Action? callback = null) { - ShowCore(name, windowName, true, parameters, callback); + await ShowCore(name, windowName, true, parameters, callback); } - private void ShowCore(string name, + private async Task ShowCore(string name, string? windowName, bool showDialog, IDialogParameters? parameters = null, @@ -66,8 +66,8 @@ private void ShowCore(string name, dialogViewModel.OnDialogOpened(parameters); dialogViewModel.RequestClose += (result) => { - dialogWindow.Close(); callback?.Invoke(result); + dialogWindow.Close(); }; dialogWindow.Closed += (s, e) => { @@ -78,8 +78,7 @@ private void ShowCore(string name, if (Application.Current!.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime classicDesktop) { var owner = classicDesktop.MainWindow!; - // todo - dialogWindow.ShowDialog(owner); + await dialogWindow.ShowDialog(owner); } } else diff --git a/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs b/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs index e11013e..a2ea545 100644 --- a/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs +++ b/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs @@ -47,7 +47,7 @@ public MainViewModel(IEnumerable modules, _navigationService.RequestViewNavigation("ItemsRegion", viewName, requestNew); _navigationService.RequestViewNavigation("TransitioningContentRegion", viewName, requestNew); }); - ToDialogCommand = ReactiveCommand.Create(content => + ToDialogCommand = ReactiveCommand.Create(async content => { var viewName = content; var showDialog = false; @@ -63,10 +63,11 @@ public MainViewModel(IEnumerable modules, }; if (showDialog) { - _dialogService.ShowDialog(viewName, param, p => + await _dialogService.ShowDialog(viewName, param, p => { - _logger.LogDebug($"close call back:{p}"); + _logger.LogDebug($"Call back:{p}"); }); + _logger.LogDebug($"ShowDialog over!"); } else { diff --git a/src/Lemon.ModuleNavigation/Abstracts/IDialogService.cs b/src/Lemon.ModuleNavigation/Abstracts/IDialogService.cs index 29f9c56..ea784e3 100644 --- a/src/Lemon.ModuleNavigation/Abstracts/IDialogService.cs +++ b/src/Lemon.ModuleNavigation/Abstracts/IDialogService.cs @@ -11,11 +11,11 @@ void Show(string name, IDialogParameters? parameters = null, Action? callback = null); - void ShowDialog(string name, + Task ShowDialog(string name, IDialogParameters? parameters = null, Action? callback = null); - void ShowDialog(string name, + Task ShowDialog(string name, string windowName, IDialogParameters? parameters = null, Action? callback = null);