以编程方式更改 StartupUri
Programmatically change StartupUri
我有两个 windows,根据条件,我希望显示一个,否则我希望显示另一个 window。
这是我目前尝试过的方法。
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
if (!string.IsNullOrEmpty(Settings.Default.CurrentEmailAddress) && !string.IsNullOrEmpty(Settings.Default.CurrentPassword))
{
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
}
else
{
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml");
}
}
但是,我不断收到两个不同的错误。
当我使用
行时
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
我收到以下错误
当我使用线路时
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml");
我收到以下错误
我能解决这个问题吗?
尝试为第二个StartupUri[=17指定UriKind.Relative =] 并使用如下所示的相对路径:
if (!string.IsNullOrEmpty(Settings.Default.CurrentEmailAddress) && !string.IsNullOrEmpty(Settings.Default.CurrentPassword))
{
StartupUri = new Uri(@"\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
}
else
{
StartupUri = new Uri(@"\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml", UriKind.Relative);
}
在@Jackdaw 的启发下,我想出了一个解决方案并意识到了我的错误。
我使用的是绝对路径,IDE 不喜欢。然后我将路径更改为以下
StartupUri = new Uri(@"./Views/UserSection/WelcomeScreen.xaml", UriKind.Relative);
欢迎屏幕构造函数采用字符串参数,因此我创建了第二个不带参数的构造函数并使用了 Settings.Default.CurrentEmailAddress
public WelcomeScreen()
{
InitializeComponent();
this.DataContext = new WelcomeScreenViewModel(Settings.Default.CurrentEmailAddress);
}
我有两个 windows,根据条件,我希望显示一个,否则我希望显示另一个 window。
这是我目前尝试过的方法。
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
if (!string.IsNullOrEmpty(Settings.Default.CurrentEmailAddress) && !string.IsNullOrEmpty(Settings.Default.CurrentPassword))
{
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
}
else
{
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml");
}
}
但是,我不断收到两个不同的错误。
当我使用
行时StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
我收到以下错误
当我使用线路时
StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml");
我收到以下错误
我能解决这个问题吗?
尝试为第二个StartupUri[=17指定UriKind.Relative =] 并使用如下所示的相对路径:
if (!string.IsNullOrEmpty(Settings.Default.CurrentEmailAddress) && !string.IsNullOrEmpty(Settings.Default.CurrentPassword))
{
StartupUri = new Uri(@"\FoodExpiry\FoodExpiry\Views\UserSection\WelcomeScreen.xaml", UriKind.Relative);
}
else
{
StartupUri = new Uri(@"\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml", UriKind.Relative);
}
在@Jackdaw 的启发下,我想出了一个解决方案并意识到了我的错误。
我使用的是绝对路径,IDE 不喜欢。然后我将路径更改为以下
StartupUri = new Uri(@"./Views/UserSection/WelcomeScreen.xaml", UriKind.Relative);
欢迎屏幕构造函数采用字符串参数,因此我创建了第二个不带参数的构造函数并使用了 Settings.Default.CurrentEmailAddress
public WelcomeScreen()
{
InitializeComponent();
this.DataContext = new WelcomeScreenViewModel(Settings.Default.CurrentEmailAddress);
}