feat: implement overlay messagebox, unify messagebox and dialog layout.

This commit is contained in:
rabbitism
2024-01-25 16:29:20 +08:00
parent 20f723b445
commit fe61ba8767
7 changed files with 361 additions and 37 deletions

View File

@@ -20,6 +20,7 @@
<ComboBox ItemsSource="{Binding Icons}" SelectedItem="{Binding SelectedIcon}" />
<ToggleSwitch Content="Try Long Message" IsChecked="{Binding UseLong}"></ToggleSwitch>
<ToggleSwitch Content="Show Title" IsChecked="{Binding UseTitle}"></ToggleSwitch>
<ToggleSwitch Content="Overlay" IsChecked="{Binding UseOverlay}"></ToggleSwitch>
<Button Command="{Binding DefaultMessageBoxCommand}" Content="Default" />
<Button Command="{Binding OkCommand}" Content="OK" />
<Button Command="{Binding OkCancelCommand}" Content="OKCancel" />

View File

@@ -61,7 +61,14 @@ public class MessageBoxDemoViewModel: ObservableObject
_title = value ? "Ursa MessageBox" : string.Empty;
}
}
private bool _useOverlay;
public bool UseOverlay
{
get => _useOverlay;
set => SetProperty(ref _useOverlay, value);
}
@@ -80,26 +87,46 @@ public class MessageBoxDemoViewModel: ObservableObject
private async Task OnDefaultMessageAsync()
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon);
if (UseOverlay)
{
Result = await MessageBox.ShowOverlayAsync(_message, _title, icon: SelectedIcon);
}
else
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon);
}
}
private async Task OnOkAsync()
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:MessageBoxButton.OK);
await Show(MessageBoxButton.OK);
}
private async Task OnYesNoAsync()
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button: MessageBoxButton.YesNo);
await Show(MessageBoxButton.YesNo);
}
private async Task OnYesNoCancelAsync()
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button: MessageBoxButton.YesNoCancel);
await Show(MessageBoxButton.YesNoCancel);
}
private async Task OnOkCancelAsync()
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:MessageBoxButton.OKCancel);
await Show(MessageBoxButton.OK);
}
private async Task Show(MessageBoxButton button)
{
if (UseOverlay)
{
Result = await MessageBox.ShowOverlayAsync(_message, _title, icon: SelectedIcon, button:button);
}
else
{
Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:button);
}
}
}