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

无法通过Binding禁用MAUI中的Entry控件

解决方案

问题核心在于IsWrong作为计算属性,未在依赖值变化时通知UI更新。尽管InputAnswer的绑定正常,但当它的值改变时,IsWrong的取值逻辑已变化,却没有触发PropertyChanged事件,导致UI无法感知IsWrong的状态变更,Entry控件自然不会被禁用。

需要做以下两处修改:

1. 完善InputAnswer的属性实现

将InputAnswer的自动属性改为手动实现,在set方法中触发自身的PropertyChanged,同时额外触发IsWrong的PropertyChanged通知(因为IsWrong的取值完全依赖InputAnswer):

private int? _inputAnswer;
public int? InputAnswer
{
    get => _inputAnswer;
    set
    {
        if (_inputAnswer != value)
        {
            _inputAnswer = value;
            OnPropertyChanged(nameof(InputAnswer));
            // 通知UI:IsWrong属性已变更
            OnPropertyChanged(nameof(IsWrong));
        }
    }
}

2. 确保INotifyPropertyChanged接口实现正确

确认你的类已完整实现INotifyPropertyChanged接口,比如包含以下基础代码:

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

验证效果

修改完成后,当用户输入的值与CorrectAnswer相等时:

  • InputAnswer更新,触发自身和IsWrong的属性变更通知
  • IsWrong的取值变为false,Entry的IsEnabled绑定会自动同步这个状态,控件随之禁用

这样就能实现「输入正确值后禁用Entry」的需求。

内容的提问来源于stack exchange,提问作者jason.kaisersmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:25:11