feat: drag MessageBox.
This commit is contained in:
@@ -13,7 +13,7 @@ namespace Ursa.Controls;
|
|||||||
[TemplatePart(PART_OKButton, typeof(Button))]
|
[TemplatePart(PART_OKButton, typeof(Button))]
|
||||||
[TemplatePart(PART_CancelButton, typeof(Button))]
|
[TemplatePart(PART_CancelButton, typeof(Button))]
|
||||||
[TemplatePart(PART_YesButton, typeof(Button))]
|
[TemplatePart(PART_YesButton, typeof(Button))]
|
||||||
public class MessageBoxWindow: Window
|
public class MessageBoxWindow : Window
|
||||||
{
|
{
|
||||||
public const string PART_CloseButton = "PART_CloseButton";
|
public const string PART_CloseButton = "PART_CloseButton";
|
||||||
public const string PART_YesButton = "PART_YesButton";
|
public const string PART_YesButton = "PART_YesButton";
|
||||||
@@ -22,17 +22,18 @@ public class MessageBoxWindow: Window
|
|||||||
public const string PART_CancelButton = "PART_CancelButton";
|
public const string PART_CancelButton = "PART_CancelButton";
|
||||||
|
|
||||||
private MessageBoxButton _buttonConfigs;
|
private MessageBoxButton _buttonConfigs;
|
||||||
|
|
||||||
private Button? _closeButton;
|
private Button? _closeButton;
|
||||||
private Button? _yesButton;
|
private Button? _yesButton;
|
||||||
private Button? _noButton;
|
private Button? _noButton;
|
||||||
private Button? _okButton;
|
private Button? _okButton;
|
||||||
private Button? _cancelButton;
|
private Button? _cancelButton;
|
||||||
|
|
||||||
protected override Type StyleKeyOverride => typeof(MessageBoxWindow);
|
protected override Type StyleKeyOverride => typeof(MessageBoxWindow);
|
||||||
|
|
||||||
public static readonly StyledProperty<MessageBoxIcon> MessageIconProperty = AvaloniaProperty.Register<MessageBoxWindow, MessageBoxIcon>(
|
public static readonly StyledProperty<MessageBoxIcon> MessageIconProperty =
|
||||||
nameof(MessageIcon));
|
AvaloniaProperty.Register<MessageBoxWindow, MessageBoxIcon>(
|
||||||
|
nameof(MessageIcon));
|
||||||
|
|
||||||
public MessageBoxIcon MessageIcon
|
public MessageBoxIcon MessageIcon
|
||||||
{
|
{
|
||||||
@@ -57,22 +58,27 @@ public class MessageBoxWindow: Window
|
|||||||
{
|
{
|
||||||
_closeButton.Click -= OnCloseButtonClick;
|
_closeButton.Click -= OnCloseButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_yesButton != null)
|
if (_yesButton != null)
|
||||||
{
|
{
|
||||||
_yesButton.Click -= OnYesButtonClick;
|
_yesButton.Click -= OnYesButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_noButton != null)
|
if (_noButton != null)
|
||||||
{
|
{
|
||||||
_noButton.Click -= OnNoButtonClick;
|
_noButton.Click -= OnNoButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_okButton != null)
|
if (_okButton != null)
|
||||||
{
|
{
|
||||||
_okButton.Click -= OnOKButtonClick;
|
_okButton.Click -= OnOKButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_cancelButton != null)
|
if (_cancelButton != null)
|
||||||
{
|
{
|
||||||
_cancelButton.Click -= OnCancelButtonClick;
|
_cancelButton.Click -= OnCancelButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
_yesButton = e.NameScope.Find<Button>(PART_YesButton);
|
||||||
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
_noButton = e.NameScope.Find<Button>(PART_NoButton);
|
||||||
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
_okButton = e.NameScope.Find<Button>(PART_OKButton);
|
||||||
@@ -82,22 +88,27 @@ public class MessageBoxWindow: Window
|
|||||||
{
|
{
|
||||||
_closeButton.Click += OnCloseButtonClick;
|
_closeButton.Click += OnCloseButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_yesButton is not null)
|
if (_yesButton is not null)
|
||||||
{
|
{
|
||||||
_yesButton.Click += OnYesButtonClick;
|
_yesButton.Click += OnYesButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_noButton is not null)
|
if (_noButton is not null)
|
||||||
{
|
{
|
||||||
_noButton.Click += OnNoButtonClick;
|
_noButton.Click += OnNoButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_okButton is not null)
|
if (_okButton is not null)
|
||||||
{
|
{
|
||||||
_okButton.Click += OnOKButtonClick;
|
_okButton.Click += OnOKButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_cancelButton is not null)
|
if (_cancelButton is not null)
|
||||||
{
|
{
|
||||||
_cancelButton.Click += OnCancelButtonClick;
|
_cancelButton.Click += OnCancelButtonClick;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetButtonVisibility();
|
SetButtonVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,24 +154,25 @@ public class MessageBoxWindow: Window
|
|||||||
{
|
{
|
||||||
Close(MessageBoxResult.OK);
|
Close(MessageBoxResult.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
Close(MessageBoxResult.Cancel);
|
Close(MessageBoxResult.Cancel);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnYesButtonClick(object sender, RoutedEventArgs e)
|
private void OnYesButtonClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.Yes);
|
Close(MessageBoxResult.Yes);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnNoButtonClick(object sender, RoutedEventArgs e)
|
private void OnNoButtonClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.No);
|
Close(MessageBoxResult.No);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnOKButtonClick(object sender, RoutedEventArgs e)
|
private void OnOKButtonClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.OK);
|
Close(MessageBoxResult.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnCancelButtonClick(object sender, RoutedEventArgs e)
|
private void OnCancelButtonClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
Close(MessageBoxResult.Cancel);
|
Close(MessageBoxResult.Cancel);
|
||||||
@@ -174,4 +186,12 @@ public class MessageBoxWindow: Window
|
|||||||
Close(MessageBoxResult.OK);
|
Close(MessageBoxResult.OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnPointerPressed(PointerPressedEventArgs e)
|
||||||
|
{
|
||||||
|
if (TopLevel.GetTopLevel(this) is Window toplevel)
|
||||||
|
{
|
||||||
|
toplevel.BeginMoveDrag(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user