日期:2014-05-17 浏览次数:20941 次
[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();
}
}
}