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

TrulyObservableCollection无法接收UI值修改通知的解决方法问询

解决方法

核心原因是集合内的ViewItemModel没有实现INotifyPropertyChanged接口,TrulyObservableCollection的ItemChanged事件依赖集合元素自身的属性变更通知才能触发,按以下步骤修改即可:

  1. 改造ViewItemModel类,继承INotifyPropertyChanged接口,属性变更时主动抛出通知:
using System.ComponentModel;
using System.Runtime.CompilerServices;

public class ViewItemModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    // 触发属性变更通知的方法,[CallerMemberName]可自动获取调用的属性名,无需手动传参
    private void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    private string _name;
    public string Name
    {
        get => _name;
        set
        {
            _name = value;
            OnPropertyChanged();
        }
    }

    private object _value;
    public object Value
    {
        get => _value;
        set
        {
            _value = value;
            OnPropertyChanged();
        }
    }
}
  1. (可选优化)如果需要TextBox输入过程中实时触发变更通知,而不是等TextBox失去焦点才触发,可以修改XAML中TextBox的绑定配置,添加UpdateSourceTrigger=PropertyChanged:
<TextBox Width="100" Text="{Binding Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
  1. 验证效果:修改TextBox值后,ViewItemModels_ItemChanged事件会正常触发,通过事件参数e可以获取到被修改的对象实例、变更的属性名,要获取全量最新值直接遍历viewItemModels集合即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:12:03