C# 如何从App.xaml.cs运行MessageBox.Show()

C# 如何从App.xaml.cs运行MessageBox.Show(),c#,windows-phone-7,messagebox,C#,Windows Phone 7,Messagebox,我可以从App.xaml.cs运行MessageBox.Show(),这样它就会显示在当前页面上。请为此解决方案或其他解决方案提供一些代码。我需要显示一些与整个应用程序相关的系统消息。我从您的问题中了解到的是,当应用程序中的其他地方发生某些事件时,您正在寻找显示App.xaml.cs中消息的方法 您可以使用App.xaml.cs注册一个事件来实现观察者模式,该事件可能由您的自定义页面触发 话虽如此,从长远来看,我建议您为此使用消息传递框架。大多数MVVM框架都附带了消息传递框架。它们易于使用,没

我可以从App.xaml.cs运行MessageBox.Show(),这样它就会显示在当前页面上。请为此解决方案或其他解决方案提供一些代码。我需要显示一些与整个应用程序相关的系统消息。

我从您的问题中了解到的是,当应用程序中的其他地方发生某些事件时,您正在寻找显示App.xaml.cs中消息的方法

您可以使用App.xaml.cs注册一个事件来实现观察者模式,该事件可能由您的自定义页面触发

话虽如此,从长远来看,我建议您为此使用消息传递框架。大多数MVVM框架都附带了消息传递框架。它们易于使用,没有或几乎没有学习曲线

  • MVVM灯
  • 简单MVVM
  • 微软模式与实践的棱镜。(对于大型应用程序)这不仅仅是一个MVVM框架
  • 超轻MVVM

  • 还有很多这样的框架。

    一个简单的方法是

      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”方法是静态的,所以您可以从任何地方调用它。当然,不用说,这不是真正“最干净”或最稳健的方法,但它会起作用。

    不确定,但这不会起作用吗

    Deployment.Current.Dispatcher.BeginInvoke(() =>
    {
     MessageBox.Show("");
    }
    );
    
    您还可以使用App.xaml.cs中提供的导航数据来确定当前页面并在该页面上执行


    我想无论你想出什么,应用程序都需要处于稳定状态,当你处理(未处理)异常时,你可能无法做到这一点。你应该多告诉我们一点,这样我们才能理解你为什么要这么做。如果您必须从App.xaml.cs调用MessageBox.Show,那么您的设置似乎有问题。我使用了此链接的摘录


    没有其他解决方案,发现:

    CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync
    

    适用于windows phone 8.1,用于从App.xaml.cs调用MessageDialog到ui线程。

    MessageBox.Show()始终显示在当前页面的顶部。你能再解释一下你的要求吗?这是真的,当你从当前页面运行它时,但我需要通过App.xaml.cs类中的某个事件来运行它。谢谢,但我的事件来自App类,MessageBox.Show(msg)应该显示在任何页面的顶部。据我所知,MessageBox始终是最顶部的,是的,它是,现在我的问题是,我如何从App类运行它,而不是从任何其他页面运行它,谢谢谢谢,我需要从App.xaml.c触发。这对我很有用,谢谢。我需要通知用户,当应用程序收到原始推送通知时。用户可以在应用程序中的任何位置。如果用户不喜欢,可以在设置中禁用此功能。有不同的方法来实现此功能。我想到的第一件事是创建一个事件,当通知到达时触发,这样页面就可以订阅它。通过这种方式,您可以在实际页面中而不是在App.xaml.cs中处理它。您可以从页面创建一个派生基类,用于实现处理事件的公共方法的所有页面。我希望这有点道理。您应该尽量保持App.xaml的干净。
    CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync