使用MVVM工具包的WPF应用程序将不会使用StartupEventHandler编译

使用MVVM工具包的WPF应用程序将不会使用StartupEventHandler编译,wpf,events,mvvm,Wpf,Events,Mvvm,我有一个WPF应用程序,当我尝试向应用程序类添加任何事件处理程序时,它不会编译 下面是我得到的所有代码和异常。应用程序使用MVVM工具包,因此这可能是一个因素 如果有人能告诉我我可能遗漏了什么或做得不对,我将不胜感激 App.xaml代码: <Application x:Class="MyClient.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns

我有一个WPF应用程序,当我尝试向应用程序类添加任何事件处理程序时,它不会编译

下面是我得到的所有代码和异常。应用程序使用MVVM工具包,因此这可能是一个因素

如果有人能告诉我我可能遗漏了什么或做得不对,我将不胜感激


App.xaml代码:

<Application x:Class="MyClient.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:vm="clr-namespace:Sample.ViewModel"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         mc:Ignorable="d" Startup="Application_Startup">

<Application.Resources>
    <!--Global View Model Locator-->
    <vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" />
    <!-- Resources scoped at the Application level should be defined here. -->
    <Style x:Key="TextBlockStyleFooter" TargetType="TextBlock">
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="Margin" Value="1"/>
    </Style>
    <Style x:Key="TextBlockStyleClock" TargetType="TextBlock">
        <Setter Property="FontFamily" Value="Arial"/>
        <Setter Property="Foreground" Value="White"/>
        <!--<Setter Property="Margin" Value="0, -1,"/>-->
        <Setter Property="TextAlignment" Value="Center"/>
    </Style>
    <Style x:Key="BorderStyle1" TargetType="Border">
    </Style>
</Application.Resources>

这里的问题是,您的XAML引用MyClient.App,而您的代码隐藏文件在示例名称空间中具有分部类。对于编译器来说,这是两个独立的类。因此,您在一个类(Sample.App)中定义的事件处理程序在生成的类MyClient.App中不存在

您只需要修复代码隐藏文件中的名称空间或XAML文件中的x:Name属性


我还要小心应用程序上的静态构造函数。我不确定代码生成器是否会添加一个公共的无参数构造函数,但如果它没有,只有一个静态构造函数将实际上意味着应用程序无法实例化。

我想为其他像我一样遇到同样错误的人发表这篇评论。 我也有同样的错误,但是我的x:class名称空间与代码隐藏名称空间没有什么不同。一些教程说,在您将Startup=“Application\u Startup”放在XAML上之后,您的代码应该会自动更新。这并没有让我犯这个错误

我的修复更新代码落后于

private void Application_Startup(object sender, StartupEventArgs e){}
添加之前

Startup="Application_Startup"
到xaml。
希望这对某人有用。

您指的是:xmlns:vm=“clr namespace:Sample.ViewModel”?因为我认为这不是问题所在。它引用了不同的名称空间,因此可以在下面的标记中使用它。还是我没领会你的意思?不,
啊。。明白了。。。就是这样。非常感谢你,乔希。
private void Application_Startup(object sender, StartupEventArgs e){}
Startup="Application_Startup"