WPF - 哪种方式更好?

时间:2013-07-20 14:02:33

标签: wpf app-startup

我有一个WPF应用程序,当第一次启动时显示窗口以选择语言。所以,在App.xaml:

<Application x:Class="MyApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="WindowLanguage.xaml">
在WindowLanguage中

public partial class WindowLanguage : Window
{
    bool mainWindowOpened = false;
    public WindowLanguage()
    {
        if (!Settings.Instance.firstStart)
        {
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
            Close();
        }

它有效,但不必要的Window是init。

我考虑以下方式: App.xaml.cs

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    if (!Settings.Instance.firstStart)
        StartupUri = new Uri("/MyApp;component/MainWindow.xaml", UriKind.Relative);

}

更改StartupUri的第二种方法是更好还是不更好?哪种方式对我的情况最好(在首次启动应用程序时打开WindowLanguage)?

1 个答案:

答案 0 :(得分:1)

设置startupUri始终优于recreating window

还有其他选项可以根据某些条件打开窗口,例如打开窗口的年龄console Main method。可以找到更多选项here

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);
    if (!Settings.Instance.firstStart)
    {
        MainWindow mainWindow = new MainWindow();
        mainWindow.Show();
    }
    else
    {
       WindowLanguage windowLanguage = new WindowLanguage();
       windowLanguage.Show();
    }
}