You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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实例,比如在代码后台构造函数里:
    public YourPage()
    {
        InitializeComponent();
        BindingContext = new YourViewModel();
    }
    
    或者在XAML中直接声明:
    <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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:33:30