System.TypeInitializationException 更改 MainWindow startupUri WPF 时

System.TypeInitializationException when changing MainWindow startupUri WPF

我正在尝试从默认启动 URI 更改 WPF 应用程序中的 MainWindow 位置:MainWindow.xamlViews\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 块,没有 avail.It 崩溃,我无法捕获异常。

主线:

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 方法中的那个。

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

  1. 更改 MainWindow.xaml

    中的 class 名称
    <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>
    
  2. 修改MainWindow.xaml.cs中的命名空间

    namespace WpfApp1.Views
    {
        /// <summary>
        /// Interaktionslogik für MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
        }
    }
    
  3. 修改App.xaml

    <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>
    
  4. 移动 MainWindow.xamlViews 文件夹

就是这样。

你做哪一个并不重要first/last,但你必须全部做。