#c_sharp #wpf #messagebox
Стандартный стиль не вписывается в мой дизайн, а вся валидация идет через Messagebox.Show("Сообщение"). Где изменить стиль? Причем надо функционал изменения, как у обычного окна, так как я сделал прозрачный стиль основных окон и использую стилизированные элементы...
Ответы
Ответ 1
Никак. MessageBox — системный, он не стилизуется. Используйте самописный MessageBox, благо там писать не сильно много. Вот вам пример: XAML:Code-behind: public partial class MessageBox : Window { public MessageBox() { InitializeComponent(); } void AddButtons(MessageBoxButton buttons) { switch (buttons) { case MessageBoxButton.OK: AddButton("OK", MessageBoxResult.OK); break; case MessageBoxButton.OKCancel: AddButton("OK", MessageBoxResult.OK); AddButton("Cancel", MessageBoxResult.Cancel, isCancel: true); break; case MessageBoxButton.YesNo: AddButton("Yes", MessageBoxResult.Yes); AddButton("No", MessageBoxResult.No); break; case MessageBoxButton.YesNoCancel: AddButton("Yes", MessageBoxResult.Yes); AddButton("No", MessageBoxResult.No); AddButton("Cancel", MessageBoxResult.Cancel, isCancel: true); break; default: throw new ArgumentException("Unknown button value", "buttons"); } } void AddButton(string text, MessageBoxResult result, bool isCancel = false) { var button = new Button() { Content = text, IsCancel = isCancel }; button.Click += (o, args) => { Result = result; DialogResult = true; }; ButtonContainer.Children.Add(button); } MessageBoxResult Result = MessageBoxResult.None; public static MessageBoxResult Show(string caption, string message, MessageBoxButton buttons) { var dialog = new MessageBox() { Title = caption }; dialog.MessageContainer.Text = message; dialog.AddButtons(buttons); dialog.ShowDialog(); return dialog.Result; } } В результате у вас получается нормальное окно, и вы можете стилизовать его, как вам угодно. Вам придётся ещё решить проблемы с локализацией, с изменением размеров окна (не стоит давать пользователю возможность максимизировать окно) и т. п.
Комментариев нет:
Отправить комментарий