日期:2014-05-17  浏览次数:20886 次

请问如何设置wpf的启动类?
请问wpf如何让程序从一个类中的函数启动,然后再通过show()方法弹出制定的窗口呢?就是不指定启动窗口,而是在程序中判断哪个是要启动窗口,然后启动。

------解决方案--------------------
C# code

        [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事件,在这里动态显示需要的窗口
C# code
        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();
}
}
}