.NET 8 MAUI使用CommunityToolkit.MVVM绑定Button命令报XFC0045错误
解决CommunityToolkit.MVVM RelayCommand绑定找不到属性的问题
最可能的原因:方法命名错误
你给方法命名成了CreateBookingCommand,加上[RelayCommand]特性后,源生成器会自动生成**方法名+Command**的属性,也就是实际生成的命令属性是CreateBookingCommandCommand,而你XAML里绑定的是CreateBookingCommand,自然找不到对应属性。
修正ViewModel代码
把方法名去掉Command后缀,改成CreateBooking,这样生成的命令属性正好是CreateBookingCommand,和XAML绑定匹配:
using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; // 必须继承ObservableObject,源生成器依赖这个基类 public partial class YourViewModel : ObservableObject { [RelayCommand] public async Task CreateBooking() { await Shell.Current.GoToAsync(nameof(BookingCreate)); } }
其他排查点
如果修正命名后还是报错,检查以下几点:
- 确认BindingContext已设置:View必须把BindingContext指向你的ViewModel实例,比如在代码后台构造函数里:
或者在XAML中直接声明:public YourPage() { InitializeComponent(); BindingContext = new YourViewModel(); }<ContentPage.BindingContext> <local:YourViewModel /> </ContentPage.BindingContext> - 检查源生成器是否工作:查看项目的
obj/Debug/net8.0-xxx(对应你的平台)目录下,是否存在类似YourViewModel.g.cs的生成文件,里面应该包含自动生成的CreateBookingCommand属性代码。 - 确认包版本与项目兼容:你用的.NET 8和CommunityToolkit.MVVM 8.2.2是兼容的,确保包已正确安装,没有遗漏。
内容的提问来源于stack exchange,提问作者Jj17
相关产品推荐
相关产品推荐

