日期:2014-05-17 浏览次数:21118 次
        [STAThread]
        static void Main() 
        {
            Window1 window = new Window1();
            window.Title = "xx";
            window.Content = "Content";
            Application myAp = new Application();
            myAp.Run(window);
        }
------解决方案--------------------
App.xaml还有其他用途(如定义全部资源),推荐的方法上,仅将App.xaml中的StartupUrl去掉,然后处理StartUp事件,在这里动态显示需要的窗口
        private void Application_Startup(object sender, StartupEventArgs e)
        {
                new Window1().ShowDialog();
            Shutdown();
        }
------解决方案--------------------
wpf默认的app的ShutdownMode="OnMainWindowClose",刚开始,app的Starturi指向的是主窗口,如果它关闭,应用程序就关闭了,因此你需要在主窗口关闭前打开第二个窗口,然后将第二个窗口设置为主窗口,再关闭第一个窗口
更方便的方法是设置<Application ShutdownMode="OnExplicitShutdown".../>,这样需要自己控制应用程序的关闭,你关闭窗体不会影响到应用程序的关闭,但此时手动需要调用Application.Shutdown()来关闭应用程序
------解决方案--------------------
App.xaml.cs文件中添加如下代码,App.xaml中去掉StartupUri...搞定!!!
   public partial class App : Application
   {
       Mutex mutex;
       public App()
       {
       }
       protected override void OnStartup(StartupEventArgs e)
       {
           try
           {
               base.OnStartup(e);
               string mutexName = Assembly.GetEntryAssembly().FullName;
               bool CreateNew;
               mutex = new Mutex(true,mutexName,out CreateNew);
               if(!CreateNew)
                   this.Shutdown();
               else
               {
                   MainWindow win = new MainWindow();
                    win.Show();
               }
           }
           catch(Exception ex)
           {
               MessageBox.Show(App.Current.MainWindow as MainWindow,ex.Message,"系统错误",MessageBoxButton.OK,MessageBoxImage.Error);
               App.Current.Shutdown();
           }
       }
   }