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

C# WPF ListView绑定ObservableCollection后TextBox编辑值未同步问题

核心问题原因

你遇到的TextBox编辑值无法同步到EditCollection的问题,由两个底层原因共同导致:

  • string是不可变引用类型,修改字符串内容本质是生成全新的string对象,无法修改原有对象的存储值
  • XAML中使用{Binding Path=.}绑定到集合元素本身时,WPF无法通过该绑定替换ObservableCollection中存储的原始元素,编辑后的新string对象不会回写入集合,因此集合中永远保留初始默认值。
解决方案

最常用的稳定方案是将字符串封装为支持属性通知的自定义模型类,修改绑定路径到模型类的属性,即可实现编辑值双向同步。

步骤1:新建字符串包装模型类

public class StringItem : INotifyPropertyChanged
{
    private string _value;
    public string Value
    {
        get => _value;
        set
        {
            _value = value;
            OnPropertyChanged(nameof(Value));
        }
    }

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

步骤2:修改ViewModel代码

private ObservableCollection<StringItem> _editCollection;
public ObservableCollection<StringItem> EditCollection
{
    get => _editCollection;
    set
    {
        _editCollection = value;
        OnPropertyChanged(nameof(EditCollection));
    }
}

private ObservableCollection<string> _collection;
public ObservableCollection<string> Collection
{
    get => _collection;
    set 
    { 
        _collection = value;
        // 初始化编辑集合时做类型转换
        EditCollection = new ObservableCollection<StringItem>(
            _collection.Select(x => new StringItem { Value = x })
        );
        OnPropertyChanged(nameof(Collection));
    }
}

public void Save(object item)
{
    // 保存时提取所有编辑后的值转成字符串集合
    Collection = new ObservableCollection<string>(
        EditCollection.Select(x => x.Value).ToList()
    );
}

public void AddToCollection(object item)
{
    EditCollection.Add(new StringItem { Value = "default value" });
    // 原有手动触发EditCollection通知的代码多余,ObservableCollection的Add方法会自动触发界面更新
}

步骤3:修改XAML绑定

<TextBox Text="{Binding Path=Value, UpdateSourceTrigger=PropertyChanged}"/>

修改后即可正常实现TextBox编辑值同步到EditCollection的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:18:03