Merge pull request #98 from noctwolf/upstream-master

重构InternalShowDialog
This commit is contained in:
NaBian authored and GitHub committed 2019-06-15 23:14:52 +08:00
commit f3439a9dd0
1 file changed
+15 -108
@@ -1,5 +1,6 @@
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Media; using System.Media;
using System.Text; using System.Text;
using System.Windows; using System.Windows;
@@ -14,6 +15,7 @@ namespace HandyControl.Controls
/// <summary> /// <summary>
/// 消息框 /// 消息框
/// </summary> /// </summary>
[SuppressMessage("ReSharper", "RedundantDelegateCreation")]
public sealed class MessageBox : Window public sealed class MessageBox : Window
{ {
private MessageBoxResult _messageBoxResult = MessageBoxResult.Cancel; private MessageBoxResult _messageBoxResult = MessageBoxResult.Cancel;
@@ -31,7 +33,7 @@ namespace HandyControl.Controls
public string Message public string Message
{ {
get => (string) GetValue(MessageProperty); get => (string)GetValue(MessageProperty);
set => SetValue(MessageProperty, value); set => SetValue(MessageProperty, value);
} }
@@ -40,7 +42,7 @@ namespace HandyControl.Controls
public Geometry Image public Geometry Image
{ {
get => (Geometry) GetValue(ImageProperty); get => (Geometry)GetValue(ImageProperty);
set => SetValue(ImageProperty, value); set => SetValue(ImageProperty, value);
} }
@@ -49,7 +51,7 @@ namespace HandyControl.Controls
public Brush ImageBrush public Brush ImageBrush
{ {
get => (Brush) GetValue(ImageBrushProperty); get => (Brush)GetValue(ImageBrushProperty);
set => SetValue(ImageBrushProperty, value); set => SetValue(ImageBrushProperty, value);
} }
@@ -58,7 +60,7 @@ namespace HandyControl.Controls
public bool ShowImage public bool ShowImage
{ {
get => (bool) GetValue(ShowImageProperty); get => (bool)GetValue(ShowImageProperty);
set => SetValue(ShowImageProperty, value); set => SetValue(ShowImageProperty, value);
} }
@@ -139,18 +141,7 @@ namespace HandyControl.Controls
public static MessageBoxResult Success(string messageBoxText, string caption = null) public static MessageBoxResult Success(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
messageBox.ShowImage = true;
messageBox.Image = ResourceHelper.GetResource<Geometry>(ResourceToken.SuccessGeometry);
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.SuccessBrush);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK); SetButtonStatus(messageBox, MessageBoxButton.OK);
@@ -159,8 +150,7 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.SuccessBrush); messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.SuccessBrush);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -173,24 +163,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Info(string messageBoxText, string caption = null) public static MessageBoxResult Info(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Information);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK); SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Information); SetImage(messageBox, MessageBoxImage.Information);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -203,24 +183,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Warning(string messageBoxText, string caption = null) public static MessageBoxResult Warning(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Warning);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Warning, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK); SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Warning); SetImage(messageBox, MessageBoxImage.Warning);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -233,24 +203,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Error(string messageBoxText, string caption = null) public static MessageBoxResult Error(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Error);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.Error, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK); SetButtonStatus(messageBox, MessageBoxButton.OK);
SetImage(messageBox, MessageBoxImage.Error); SetImage(messageBox, MessageBoxImage.Error);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -263,18 +223,7 @@ namespace HandyControl.Controls
public static MessageBoxResult Fatal(string messageBoxText, string caption = null) public static MessageBoxResult Fatal(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK);
messageBox.ShowImage = true;
messageBox.Image = ResourceHelper.GetResource<Geometry>(ResourceToken.FatalGeometry);
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.PrimaryTextBrush);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OK, MessageBoxImage.None, MessageBoxResult.OK);
SetButtonStatus(messageBox, MessageBoxButton.OK); SetButtonStatus(messageBox, MessageBoxButton.OK);
@@ -283,8 +232,7 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.PrimaryTextBrush); messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(ResourceToken.PrimaryTextBrush);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -297,24 +245,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Ask(string messageBoxText, string caption = null) public static MessageBoxResult Ask(string messageBoxText, string caption = null)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
SetButtonStatus(messageBox, MessageBoxButton.OKCancel);
SetImage(messageBox, MessageBoxImage.Question);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel); messageBox = CreateMessageBox(null, messageBoxText, caption, MessageBoxButton.OKCancel, MessageBoxImage.Question, MessageBoxResult.Cancel);
SetButtonStatus(messageBox, MessageBoxButton.OKCancel); SetButtonStatus(messageBox, MessageBoxButton.OKCancel);
SetImage(messageBox, MessageBoxImage.Question); SetImage(messageBox, MessageBoxImage.Question);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -327,7 +265,6 @@ namespace HandyControl.Controls
public static MessageBoxResult Show(MessageBoxInfo info) public static MessageBoxResult Show(MessageBoxInfo info)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{ {
messageBox = CreateMessageBox(null, info.MessageBoxText, info.Caption, info.Button, MessageBoxImage.None, info.DefaultResult); messageBox = CreateMessageBox(null, info.MessageBoxText, info.Caption, info.Button, MessageBoxImage.None, info.DefaultResult);
@@ -340,33 +277,13 @@ namespace HandyControl.Controls
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(info.IconBrushKey); messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(info.IconBrushKey);
} }
if (info.Style != null)
{
messageBox.Style = info.Style;
}
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{
messageBox = CreateMessageBox(null, info.MessageBoxText, info.Caption, info.Button, MessageBoxImage.None, info.DefaultResult);
SetButtonStatus(messageBox, info.Button);
if (!string.IsNullOrEmpty(info.IconKey))
{
messageBox.ShowImage = true;
messageBox.Image = ResourceHelper.GetResource<Geometry>(info.IconKey);
messageBox.ImageBrush = ResourceHelper.GetResource<Brush>(info.IconBrushKey);
}
if (info.Style != null) if (info.Style != null)
{ {
messageBox.Style = info.Style; messageBox.Style = info.Style;
} }
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -398,24 +315,14 @@ namespace HandyControl.Controls
public static MessageBoxResult Show(System.Windows.Window owner, string messageBoxText, string caption = null, MessageBoxButton button = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None, MessageBoxResult defaultResult = MessageBoxResult.None) public static MessageBoxResult Show(System.Windows.Window owner, string messageBoxText, string caption = null, MessageBoxButton button = MessageBoxButton.OK, MessageBoxImage icon = MessageBoxImage.None, MessageBoxResult defaultResult = MessageBoxResult.None)
{ {
MessageBox messageBox = null; MessageBox messageBox = null;
#if netle40
Application.Current.Dispatcher.Invoke(new Action(() => Application.Current.Dispatcher.Invoke(new Action(() =>
{
messageBox = CreateMessageBox(owner, messageBoxText, caption, button, icon, defaultResult);
SetButtonStatus(messageBox, button);
SetImage(messageBox, icon);
messageBox.ShowDialog();
}));
#else
Application.Current.Dispatcher.Invoke(() =>
{ {
messageBox = CreateMessageBox(owner, messageBoxText, caption, button, icon, defaultResult); messageBox = CreateMessageBox(owner, messageBoxText, caption, button, icon, defaultResult);
SetButtonStatus(messageBox, button); SetButtonStatus(messageBox, button);
SetImage(messageBox, icon); SetImage(messageBox, icon);
SystemSounds.Asterisk.Play(); SystemSounds.Asterisk.Play();
messageBox.ShowDialog(); messageBox.ShowDialog();
}); }));
#endif
return messageBox._messageBoxResult; return messageBox._messageBoxResult;
} }
@@ -540,4 +447,4 @@ namespace HandyControl.Controls
|| value == MessageBoxResult.Yes; || value == MessageBoxResult.Yes;
} }
} }
} }