如何引发子属性的 PropertyChanged 事件

本文关键字:PropertyChanged 事件 属性 何引发 | 更新日期: 2023-09-27 18:31:59

我想做的是将控件绑定到一个对象,我有一个分类法。我遇到的问题是当我做类似的事情时

private Taxonomy _currentTaxonomy = new Taxonomy() { TaxonomyID=0 };
public Taxonomy CurrentTaxonomy{
    get;
    set{
          _currentTaxonomy = value
          NotifyPropertyChanged("Taxonomy");
    }
}

这样,当设置分类时,它会发出通知。但问题是我有绑定到该分类中的值的控件,在设置分类时不会收到通知。因此,如果我加载新的分类,则不会发出任何通知。

例如,如果我尝试像这样设置分类法,请使用实体框架:

CurrentTaxonomy = context.Taxonomies.Find(2);

通知事件,如下所示:

public int TaxonomyID { 
    get { return _TaxonomyID; } 
    set { _TaxonomyID = value; NotifyPropertyChanged("TaxonomyID"); } 
}

不会被解雇。

根据请求,文本框的绑定方式如下:

tbTitle.DataBindings.Add("Text", _currentTaxonomy, "Title", false, DataSourceUpdateMode.OnPropertyChanged);

如何引发子属性的 PropertyChanged 事件

您应该将数据绑定到属性名称 TaxonomyID 。假设您的BindingSource.DataSource指向CurrentTaxonomy类。

tbTitle.DataBindings.Add("Text", _currentTaxonomy, "TaxonomyID", false, DataSourceUpdateMode.OnPropertyChanged);

请参阅此帖子:

C# 数据绑定 - 自动将更改的属性写入标签或文本框