我可以在App.xaml.cs中运行MessageBox.Show(),这样它会显示在当前页面上。请提供一些解决方案的代码或其他方案。我需要显示一些与整个应用程序相关的系统消息。
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
MessageBox.Show("");
}
);
public partial class App : Application
{
public static void ShowBox(string msg)
{
MessageBox.Show(msg);
}
}
然后从窗口或应用程序的任何其他部分...
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
App.ShowBox("Hello!");
...
'ShowBox'方法是静态的,因此您可以从任何地方调用它。当然,毫无疑问,这并不是最干净或最健壮的方法,但它可行。
我从你的问题中理解到,你正在寻找一种方法,在应用程序的其他地方触发某些事件时,从App.xaml.cs中显示消息。
你可以使用观察者模式实现,让App.xaml.cs注册一个由你的自定义页面触发的事件。
话虽如此,从长远来看,我建议你使用消息框架来实现这个目的。大多数MVVM框架都带有消息框架。它们易于使用,没有或很少的学习曲线。
还有许多类似的框架。
我使用了这个链接中的代码片段 http://www.c-sharpcorner.com/UploadFile/c25b6d/message-dialog-in-windows-store-apps/
private async void Delete_Click(object sender, RoutedEventArgs e)
{
var messageDialog = new Windows.UI.Popups.MessageDialog("Are you sure you want to permanently delete this record?");
messageDialog.Commands.Add(new UICommand("Yes", (command) =>
{
//Do delete
}));
messageDialog.Commands.Add(new UICommand("No", (command) =>
{
//Do Nothing
}));
//default command
messageDialog.DefaultCommandIndex = 1;
await messageDialog.ShowAsync();
}
在尝试其他解决方案无果后,找到了:
CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync
在Windows Phone 8.1上,可以从App.xaml.cs调用MessageDialog到UI线程。