我正在尝试替换我的应用程序中的所有MessageBox.Show调用,因此我创建了一个静态MsgBox类,其中定义了以下两种方法:
(一个)
public static MessageBoxResult Show(Window owner, string messageBoxText, string caption = "",
MessageBoxButton button = MessageBoxButton.OK,
MessageBoxImage icon = MessageBoxImage.None,
MessageBoxResult defaultResult = MessageBoxResult.None)
这个调用另一个
的那个(2)
public static MessageBoxResult Show(string messageBoxText, string caption = "",
MessageBoxButton button = MessageBoxButton.OK,
MessageBoxImage icon = MessageBoxImage.None,
MessageBoxResult defaultResult = MessageBoxResult.None)
{
return Show(Application.Current.MainWindow, messageBoxText, caption, button, icon, defaultResult);
}
所以问题是如果我直接调用第一个,没有问题,一切正常。但如果我打电话给第二个没有任何反应。
有什么我不明白这一切是如何运作的吗?
答案 0 :(得分:3)
.Show重载方法用于显示您想要的任何类型的MessageBox。
您正在返回一个未应用于任何MessageBox的.Show,因此您需要获取此返回值并将其用作MessageBox.Show(whateverReturned)
答案 1 :(得分:1)
看起来答案是我试图从不允许的后台线程获取MainWindow。
我已将第二个方法代码更改为:
Window mainWindow = null;
UiDispatcher.Invoke(delegate { mainWindow = Application.Current.MainWindow; }, DispatcherPriority.Normal);
return Show(mainWindow, messageBoxText, caption, button, icon, defaultResult);
再次感谢@Dan和@ChrisSinclair带我走过它!