当我尝试向App类添加任何事件处理程序时,我有一个不编译的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>
App.xaml.cs代码:
using System;
using System.Windows;
using System.Windows.Threading;
using GalaSoft.MvvmLight.Threading;
namespace Sample
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
static App()
{
DispatcherHelper.Initialize();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
}
}
}
当我尝试编译它时,我得到以下异常:
Error 1 'MyClient.App' does not contain a definition for 'Application_Startup' and no extension method 'Application_Startup' accepting a first argument of type 'EdgePokerClient.App' could be found (are you missing a using directive or an assembly reference?) C:\projects.git\MyClient\src\MyClient\App.xaml 7 73 MyClient
答案 0 :(得分:3)
这里的问题是您的XAML引用MyClient.App,而您的代码隐藏文件在Sample命名空间中具有部分类。对于编译器,这些是两个单独的类。因此,您在一个类(Sample.App)中定义的事件处理程序不存在于生成的类MyClient.App中。
您只需修复代码隐藏文件中的命名空间或XAML文件中的x:Name属性。
我还要小心App上的静态构造函数。我不确定代码生成器是否会添加公共无参数构造函数,但如果没有,只有静态构造函数将有效地表示App无法实例化。
答案 1 :(得分:0)
我想发布此评论给其他人像我一样得到同样的错误。 我有同样的错误,但是我的x:class命名空间与命名空间后面的代码没有什么不同。一些教程说,在你的XAML上放置Startup =“Application_Startup”后,你的代码应该自动更新。没有发生这种错误导致我。
我的修复 - 用
更新代码private void Application_Startup(object sender, StartupEventArgs e){}
之后添加
Startup="Application_Startup"
到xaml。 希望这对某人有用。