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

升级Visual Studio 17.3.0 Preview 2后.NET MAUI数据绑定失效问题

.NET MAUI 升级后属性绑定失效修复

你的问题由两个明确的问题叠加导致,Command能正常执行但属性UI不更新是这类问题的典型特征:

  • 第一处错误是MauiProgram.cs中重复调用了UseMauiApp<App>()
    你在初始化时先写了builder.UseMauiApp<App>().UseMauiCommunityToolkit();,后续配置字体时又调用了一次UseMauiApp<App>()。重复执行该方法会重置MAUI核心UI管线的事件转发链路,其中就包含PropertyChanged事件到UI刷新的绑定逻辑。Command绑定不受影响是因为点击事件是控件实例化时一次性挂载的,而属性变更监听是随管线初始化注册的,第二次调用UseMauiApp会把之前注册的监听全部覆盖。
    修正后的MauiProgram配置:
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        // 仅调用一次UseMauiApp,链式拼接所有扩展配置
        builder
            .UseMauiApp<App>()
            .UseMauiCommunityToolkit()
            .ConfigureFonts(fonts =>
            {
                fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
            });
    
        // DI注册逻辑无需修改
        builder.Services.AddSingleton<MainPageViewModel>();
        builder.Services.AddSingleton<MainPage>();
    
        return builder.Build();
    }
    
  • 第二处是版本兼容问题:你当前引用的Microsoft.Toolkit.Mvvm是旧版命名的包,该包已经正式迁移为CommunityToolkit.Mvvm。VS 17.3 Preview 2附带的新版MAUI绑定引擎调整了事件识别逻辑,旧包中ObservableObject触发的PropertyChanged事件不会被引擎正确接收。
    修复步骤:
    1. 卸载项目中所有Microsoft.Toolkit.Mvvm相关的NuGet包
    2. 安装对应版本的CommunityToolkit.Mvvm包
    3. 替换ViewModel中的命名空间引用:
    // 删除旧引用
    // using Microsoft.Toolkit.Mvvm.Input;
    // using Microsoft.Toolkit.Mvvm.ComponentModel;
    // 替换为新命名空间
    using CommunityToolkit.Mvvm.Input;
    using CommunityToolkit.Mvvm.ComponentModel;
    

额外注意:Preview版本的VS增量编译存在已知的绑定缓存问题,修改完上述代码后,先手动删除项目的bin、obj文件夹,再重新编译部署,避免旧缓存导致修复不生效。如果需要快速验证绑定链路是否恢复,可以临时给IsVisible绑定加上Mode=TwoWay参数,强制双向绑定检测。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 16:27:26