更改MainWindow startupUri WPF时出现System.TypeInitializationException

时间:2017-09-18 07:26:36

标签: c# wpf uri mainwindow typeinitializeexception

我正在尝试将WPF应用程序中的MainWindow位置从默认启动URI: MainWindow.xaml 更改为 视图\ MainWindow.xaml。 其中Views是在项目文件夹中创建的文件夹。

Uri:this.StartupUri = new System.Uri(@"Views\MainWindow.xaml", System.UriKind.Relative);

我更改了uri然后应用程序因以下错误而中断:

 An unhandled exception of type 'System.TypeInitializationException'occurred in PresentationFramework.dll


Additional information: The type initializer for 'System.Windows.Application' threw an exception.

我在Main方法,InitializeComponent方法和MainWindow构造函数中放置断点和try-catch块无效。它崩溃了,我无法捕获异常。

主要

public static void Main() {
            try
            {
                wpfTest.App app = new wpfTest.App();
                app.InitializeComponent();
                app.Run();
            }catch(Exception ex)
            {
                Console.WriteLine(ex.InnerException.Message);
            }
        }

还是必须在其他地方更改startupUri吗?它只有一个引用:InitializeComponent方法中的引用。

1 个答案:

答案 0 :(得分:0)

要将MainWindow移动到Views文件夹(命名空间),您必须按照以下步骤操作

  1. 更改CMTime

    中的班级名称
    MainWindow.xaml
  2. 修改<Window x:Class="WpfApp1.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> </Grid> </Window>

    中的命名空间
    MainWindow.xaml.cs
  3. 修改namespace WpfApp1.Views { /// <summary> /// Interaktionslogik für MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } }

    App.xaml
  4. <Application x:Class="WpfApp1.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApp1" StartupUri="Views/MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> 移至MainWindow.xaml文件夹

  5. 就是这样。

    你先做/做哪一个并不重要,但你必须做所有这些。