Files
QoSManager/Views/CustomMessageBox.xaml.cs
T
ded_ikar e7ea83daa0 fix QoS
2026-05-04 01:50:35 +05:00

103 lines
3.4 KiB
C#

using System.Windows;
using System.Windows.Input;
namespace QoSManager.Views
{
public partial class CustomMessageBox : Window
{
public MessageBoxResult Result { get; private set; }
public CustomMessageBox()
{
InitializeComponent();
DataContext = this;
}
public string Message
{
get { return (string)GetValue(MessageProperty); }
set { SetValue(MessageProperty, value); }
}
public static readonly DependencyProperty MessageProperty =
DependencyProperty.Register("Message", typeof(string), typeof(CustomMessageBox), new PropertyMetadata(""));
public static MessageBoxResult Show(string message, string title = "QoS Manager", MessageBoxButton buttons = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None)
{
var messageBox = new CustomMessageBox
{
Title = title,
Message = message
};
// Сначала скрыть все кнопки
messageBox.OKButton.Visibility = Visibility.Collapsed;
messageBox.CancelButton.Visibility = Visibility.Collapsed;
messageBox.YesButton.Visibility = Visibility.Collapsed;
messageBox.NoButton.Visibility = Visibility.Collapsed;
// Настройка кнопок в зависимости от типа
switch (buttons)
{
case MessageBoxButton.OK:
messageBox.OKButton.Visibility = Visibility.Visible;
break;
case MessageBoxButton.OKCancel:
messageBox.OKButton.Visibility = Visibility.Visible;
messageBox.CancelButton.Visibility = Visibility.Visible;
break;
case MessageBoxButton.YesNo:
messageBox.YesButton.Visibility = Visibility.Visible;
messageBox.NoButton.Visibility = Visibility.Visible;
break;
case MessageBoxButton.YesNoCancel:
messageBox.YesButton.Visibility = Visibility.Visible;
messageBox.NoButton.Visibility = Visibility.Visible;
messageBox.CancelButton.Visibility = Visibility.Visible;
break;
}
messageBox.ShowDialog();
return messageBox.Result;
}
private void OKButton_Click(object sender, RoutedEventArgs e)
{
Result = MessageBoxResult.OK;
Close();
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
Result = MessageBoxResult.Cancel;
Close();
}
private void YesButton_Click(object sender, RoutedEventArgs e)
{
Result = MessageBoxResult.Yes;
Close();
}
private void NoButton_Click(object sender, RoutedEventArgs e)
{
Result = MessageBoxResult.No;
Close();
}
private void TitleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
{
DragMove();
}
}
private void CloseButton_Click(object sender, RoutedEventArgs e)
{
Result = MessageBoxResult.Cancel;
Close();
}
}
}