以编程方式更改 StartupUri

我有两个窗口,并且取决于我希望显示一个窗口的条件,否则我希望显示另一个窗口。


这是我到目前为止所尝试的。


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);

我收到以下错误

http://img4.mukewang.com/61da9b6b0001a1a004110181.jpg

当我使用这条线时

StartupUri = new Uri(@"C:\Users\User1\Desktop\FoodExpiryWC\FoodExpiry\FoodExpiry\Views\RegisterViews\MainWindow.xaml");

我收到以下错误

http://img1.mukewang.com/61da9b770001467905470247.jpg

他们无论如何我可以解决这个问题吗?


弑天下
浏览 205回答 2
2回答

紫衣仙女

在@Jackdaw 的启发下,我想出了一个解决方案并意识到我的错误。我使用的是绝对路径,IDE 不喜欢它。然后我将路径更改为以下StartupUri = new Uri(@"./Views/UserSection/WelcomeScreen.xaml", UriKind.Relative);欢迎屏幕构造函数采用字符串参数,因此我创建了第二个没有参数的构造函数并使用了 Settings.Default.CurrentEmailAddresspublic WelcomeScreen()        {            InitializeComponent();            this.DataContext = new WelcomeScreenViewModel(Settings.Default.CurrentEmailAddress);        }

绝地无双

尝试为第二个StartupUri指定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);}
打开App,查看更多内容
随时随地看视频慕课网APP