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

Xamarin-C#后端绑定生效但前端输入变更未同步至模型问题

问题根因

你当前的写法是直接给Entry的Text属性做一次性静态赋值,没有建立Xamarin绑定体系下的双向绑定关联,所以只有初始化时能拿到模型值,控件修改后不会反向同步到模型。

修复方案
  • 替换直接给Text赋值的写法,改用SetBinding方法建立双向绑定:
var entry = new Entry() { WidthRequest = 100 };
// 建立Entry的Text属性和绑定上下文的EditFirstname属性的双向绑定
entry.SetBinding(Entry.TextProperty, nameof(Model.EditFirstname), BindingMode.TwoWay);
stackLayoutF.Children.Add(entry);
stackLayoutContent.Children.Add(stackLayoutF);
  • 确认模型类已经正确实现INotifyPropertyChanged接口:你代码里用到的SetProperty方法只要是标准实现就没问题,标准实现参考如下:
public class YourModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
    {
        if (EqualityComparer<T>.Default.Equals(storage, value)) return false;
        storage = value;
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        return true;
    }

    private string _editFirstname = "United";
    public string EditFirstname
    {
        get => _editFirstname;
        set => SetProperty(ref _editFirstname, value);
    }
}
  • 你原有的this.BindingContext = Model;赋值逻辑正确,无需修改。
补充说明

Xamarin中Entry的Text属性默认绑定模式就是TwoWay,如果你没有修改过全局默认配置,SetBinding中的BindingMode.TwoWay参数可以省略,显式声明可以避免歧义。

内容的提问来源于stack exchange,提问作者JaDa-ma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 23:27:05