.NET MAUI中XAML添加的事件处理程序未自动绑定问题
.NET MAUI XAML 声明事件处理程序不生效修复方案
该问题绝大多数场景不属于框架Bug,按以下优先级排查配置即可,不需要逐一手写事件绑定代码:
- 检查XAML文件生成操作
找到对应页面的.xaml文件,右键打开属性面板,确认生成操作设置为MauiXaml。如果生成操作被误设为Content、Embedded Resource等其他值,XAML编译器仅会生成x:Name对应的控件字段引用,不会自动注入XAML中声明的事件绑定逻辑,就会出现IDE能自动补全后台事件方法、但运行时事件未附加的现象。 - 校验XAML编译相关配置
打开项目.csproj文件,确认主属性组中存在如下配置,缺失则手动补上:
同时检查全局(App.xaml.cs)或页面级的代码,删除所有<UseMaui>true</UseMaui> <EnableXamlCompilation>true</EnableXamlCompilation>[XamlCompilation(XamlCompilationOptions.Skip)]特性,该特性会强制跳过XAML编译期代码生成,所有XAML内声明的事件、绑定都不会自动关联。 - 校验partial类匹配关系
确认XAML根节点的x:Class属性值,与后台代码隐藏文件的命名空间、类名完全一致。例如XAML中声明x:Class="MyMauiApp.Pages.DemoPage",则对应.xaml.cs中的类声明必须是namespace MyMauiApp.Pages { public partial class DemoPage : ContentPage { ... } },任意命名空间、类名不匹配都会导致XAML生成的绑定代码无法和手写的后台代码合并。 - 清理历史编译缓存
从Xamarin迁移的项目、或者跨MAUI版本升级的项目很容易残留旧编译缓存,做完上述配置修改后按步骤清理:- 关闭所有打开的IDE窗口
- 删除解决方案下所有项目的
bin、obj文件夹 - 重启IDE后重新生成解决方案
补充:6.0.312及更早的MAUI GA版本确实存在过XAML事件绑定偶发丢失的已知Bug,如果你用的是这个区间的版本,直接把MAUI workload升级到最新稳定版就能解决,不用改业务代码。
内容的提问来源于stack exchange,提问作者Sormin
相关产品推荐
相关产品推荐

