diff --git a/demo/Ursa.Demo/Pages/DialogDemo.axaml b/demo/Ursa.Demo/Pages/DialogDemo.axaml index ef5dc49..072edcb 100644 --- a/demo/Ursa.Demo/Pages/DialogDemo.axaml +++ b/demo/Ursa.Demo/Pages/DialogDemo.axaml @@ -17,6 +17,10 @@ + + + + diff --git a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs index f9144e2..02ad255 100644 --- a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs +++ b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs @@ -23,6 +23,16 @@ public class DialogDemoViewModel: ObservableObject set => SetProperty(ref _result, value); } + private DateTime _date; + + public DateTime Date + { + get => _date; + set => SetProperty(ref _date, value); + } + + public DialogWithActionViewModel DialogViewModel { get; set; } = new DialogWithActionViewModel(); + public DialogDemoViewModel() { ShowLocalOverlayDialogCommand = new AsyncRelayCommand(ShowLocalOverlayDialog); @@ -43,8 +53,10 @@ public class DialogDemoViewModel: ObservableObject private async Task ShowLocalOverlayDialog() { + var vm = new DialogWithActionViewModel(); var result = await DialogBox.ShowOverlayAsync( - new DialogWithActionViewModel(), "LocalHost"); + DialogViewModel, "LocalHost"); + Date = vm.Date; Result = result; } } \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Controls/Dialog.axaml b/src/Ursa.Themes.Semi/Controls/Dialog.axaml index 6774e5c..9e4662a 100644 --- a/src/Ursa.Themes.Semi/Controls/Dialog.axaml +++ b/src/Ursa.Themes.Semi/Controls/Dialog.axaml @@ -20,10 +20,6 @@ Grid.Row="0" Grid.RowSpan="2" Content="{TemplateBinding Content}" /> - - - - diff --git a/src/Ursa/Controls/Dialog/DialogControl.cs b/src/Ursa/Controls/Dialog/DialogControl.cs index 7aeae47..5e1f408 100644 --- a/src/Ursa/Controls/Dialog/DialogControl.cs +++ b/src/Ursa/Controls/Dialog/DialogControl.cs @@ -10,8 +10,6 @@ public class DialogControl: ContentControl { public const string PART_CloseButton = "PART_CloseButton"; - - private Button? _closeButton; public event EventHandler OnClose; @@ -38,17 +36,22 @@ public class DialogControl: ContentControl public Task ShowAsync() { var tcs = new TaskCompletionSource(); - this.OnClose+= (sender, args) => + + void OnCloseHandler(object sender, object? args) { if (args is T result) { tcs.SetResult(result); + OnClose-= OnCloseHandler; } else { - tcs.SetResult(default); + tcs.SetResult(default(T)); + OnClose-= OnCloseHandler; } - }; + } + + this.OnClose += OnCloseHandler; return tcs.Task; }