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

.NET MAUI中DeletePage按钮无法触发MainViewModel的DeleteColor方法

问题原因

DeletePage的按钮无法触发命令的核心原因是页面的BindingContext未关联到MainViewModel的实例。MainPage能正常工作是因为它的BindingContext已正确设置(可能在后台代码或全局配置中),但DeletePage缺少这一步,导致XAML中的{Binding DeleteColorCommand}找不到对应的命令对象。

解决方案

方法1:在DeletePage后台代码中设置BindingContext

打开DeletePage.xaml.cs,在构造函数中添加BindingContext赋值:

public partial class DeletePage : ContentPage
{
    public DeletePage()
    {
        InitializeComponent();
        // 绑定到MainViewModel实例
        BindingContext = new MauiApp.ViewModel.MainViewModel();
        // 若项目用依赖注入管理单例,可改为获取全局实例:
        // BindingContext = App.Current.Services.GetService<MainViewModel>();
    }
}

方法2:在DeletePage的XAML中直接设置BindingContext

在DeletePage.xaml的ContentPage标签中添加BindingContext属性:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiApp.DeletePage"
             xmlns:viewmodel="clr-namespace:MauiApp.ViewModel"
             x:DataType="viewmodel:MainViewModel"
             Title="DeleteColor"
             BindingContext="{StaticResource MainViewModel}">

注:使用此方式需先在App.xaml或页面资源中注册MainViewModel的静态资源,新手阶段更推荐方法1,便于调试和理解。

额外验证点

  • [RelayCommand]特性会自动生成public的DeleteColorCommand,可访问性无问题;
  • 你的CommandParameter="{Binding Source={x:Reference ent_DeleteColor}, Path=Text}"绑定逻辑正确,能将输入框文本作为参数传递给DeleteColor方法。
补充说明

若项目采用依赖注入管理ViewModel,建议将MainViewModel注册为单例(AddSingleton<MainViewModel>()),这样MainPage和DeletePage会共享同一个ViewModel实例,确保删除操作的数据源一致。

内容的提问来源于stack exchange,提问作者Cooper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:51:17