为了账号安全,请及时绑定邮箱和手机立即绑定

设置没有被调用

设置没有被调用

C#
Helenr 2021-06-20 16:23:10
在我的 C# WPF 应用程序中,我有以下内容:    ObservableCollection<SpecialtyFees> _SpecialtyFeeEGG;    public ObservableCollection<SpecialtyFees> SpecialtyFeeEGG    {        get { return _SpecialtyFeeEGG; }        set        {            if (_SpecialtyFeeEGG == value)                return;            _SpecialtyFeeEGG = value;            RaisePropertyChanged("SpecialtyFeeEGG");        }    }执行以下行时,将调用 SET 方法,如我所料:        SpecialtyFeeEGG = new ObservableCollection<SpecialtyFees>();但是,稍后在代码中,将 specialFee 添加到 SpecialtyFeeEGG 时,它不会被调用,我希望它会被调用。我错过了什么?        foreach (var item in Specialties)        {            SpecialtyFees specialtyFee = new SpecialtyFees();            specialtyFee.SpecialtyCode = item.SpecialtyCode;            specialtyFee.CurrentTotal = 0;            specialtyFee.BidTotal = 0;            specialtyFee.BidDifference = 0;            if (specialtyFee.SpecialtyCode.Length == 3)            {                SpecialtyFeeEGG.Add(specialtyFee);            }        }
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

正确的使用ObservableCollection方法如下:


private ObservableCollection<SpecialtyFees> _SpecialtyFeeEGG 

   = new ObservableCollection<SpecialtyFees>();


public ObservableCollection<SpecialtyFees> SpecialtyFeeEGG

{

    get { return _SpecialtyFeeEGG; }

}

在 WPF 中使用绑定时,每次对绑定源进行更改时都需要通知。否则(例如这种情况)该值始终指的是在构造函数或字段初始值设定项 ( new ObservableCollection<SpecialtyFees>()) 中指定的值。而且由于您不需要更改源,可观察集合将负责对集合所做的添加/删除/更改。


在这种情况下也不需要 Set 方法RaisePropertyChanged。但是,只有当您必须更改源时,它才会按您预期的那样处理集合源的更改。


查看完整回答
反对 回复 2021-06-26
?
DIEA

TA贡献1820条经验 获得超2个赞

您只能编辑对象,而不是对该特定对象的指针/引用。这与说您有列表 x 相同。如果你设置x = new List();你实际上制作了一个新列表。当向这个列表添加一些东西时,x 的引用地址不会改变。而 x 的内容是。


查看完整回答
反对 回复 2021-06-26
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

ObservableCollection<SpecialityFees>对象实际上并没有改变,您只是向它的项目添加了内容,因此它不会set在对象本身上触发该方法。

您将需要使用该SpecialityFeeEGG_CollectionChanged方法来捕获对集合的添加。


查看完整回答
反对 回复 2021-06-26
  • 3 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信