我在 WPF 中遇到一个问题,当我尝试为按钮提供一些事件(此处为单击)时,它会弹出错误消息 --
“MainWindow”不包含“ToggleB1_Click”的定义,并且找不到接受“MainWindow”类型的第一个参数的可访问扩展方法“ToggleB1_Click”(您是否缺少 using 指令或程序集引用?)
错误发生在 mainwindow.xaqml 文件第 13 行,其中使用了按钮标签。我尝试附加事件处理程序两次以查看它是否有效,但它只是给出了相同的错误。
MainWindow.xaml 代码是 --
`<Grid>
<TextBlock Name="Hello" FontSize="70" FontWeight="DemiBold"
VerticalAlignment="Center" HorizontalAlignment="Center" />
<Button Click="ToggleB1_Click" Name="ToggleB1" Content="Click" HorizontalAlignment="Center" VerticalAlignment="Bottom"
Width="200"
Height="50" FontSize="30" Background="Black"
Foreground="White" />
</Grid>
</Window>
`
MainWindow.xaml.cs 代码是 --
`namespace C__experiments_WPF_
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
bool running = false;
public MainWindow()
{
InitializeComponent();
ToggleB1.Click += ToggleB1_Click;
}
private void ToggleB1_Click(object sender, RoutedEventArgs e)
{
running = !running;
if (running)
{
ToggleB1.Content = "Stop";
Hello.Text = "Hello";
}
else
{
ToggleB1.Content = "Start";
Hello.Text = "Bye";
}
}
}
}`
我正在使用 .NET 8 和 wpf
我尝试过更改名称、更改 .net 版本以及互联网上的其他所有内容(我并不夸张)。此外,清理并重建项目或删除 obj 和 bin 文件夹并重建它也不起作用。
您遇到的问题可能是由于事件处理程序声明与 XAML 中事件的引用方式之间不匹配或冲突造成的。以下是可能的原因和解决方案的细分:
1。检查命名空间 确保 MainWindow.xaml 和 MainWindow.xaml.cs 文件中的命名空间与项目的命名空间匹配。在你的例子中: 命名空间 C__experiments_WPF_
如果存在拼写错误或差异,可能找不到事件处理程序。
2。事件处理程序定义 该错误表明编译期间未找到 ToggleB1_Click 事件处理程序。验证:
ToggleB1_Click 方法在 XAML 和代码隐藏中的拼写完全相同。 MainWindow.xaml.cs 中的方法签名与所需的签名匹配:
private void ToggleB1_Click(对象发送者,RotedEventArgs e)
3. XAML 定义 XAML 中的 Click 属性通过名称引用该方法。确保其书写正确:
4。避免冗余附件 由于您在 XAML 中指定 Click="ToggleB1_Click",因此构造函数中的行:
ToggleB1.Click += ToggleB1_Click;
5。重建和清理项目