WPF如何给Button绑定Click事件?CS8321未使用错误怎么解决
WPF按钮点击事件实现错误原因及正确方案
错误原因
你收到CS8321报错的根本原因是:你将OpenSupplyLine事件处理方法定义在了MainWindow的构造函数内部,属于构造函数的局部函数,作用域仅局限在构造函数执行过程中,WPF的XAML解析器无法访问到局部函数,因此无法完成事件绑定,编译器检测到该局部函数从未被调用就抛出了对应错误。
正确实现方式
WPF绑定按钮点击事件有两种常用方案,可二选一:
方案1:XAML绑定+类级别事件处理方法(最常用)
你原有XAML代码不需要修改,仅需调整后台C#代码的方法位置,将事件处理方法移到构造函数外部,作为MainWindow类的实例方法即可:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory); } // 事件处理方法定义在类级别,默认私有访问权限即可 private void OpenSupplyLine(object sender, RoutedEventArgs e) { btnOpenSupplyLine.Background = Brushes.Red; } }
方案2:后台代码手动订阅事件
如果你不想在XAML中声明Click绑定属性,也可以在构造函数中手动给按钮的Click事件注册处理委托:
首先删除XAML中Button的Click="OpenSupplyLine"属性,再修改C#代码如下:
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory); // 手动订阅点击事件 btnOpenSupplyLine.Click += OpenSupplyLine; } private void OpenSupplyLine(object sender, RoutedEventArgs e) { btnOpenSupplyLine.Background = Brushes.Red; } }
内容的提问来源于stack exchange,提问作者JJNL77
相关产品推荐
相关产品推荐

