我有一个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)?
答案 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();
}
}