【发布时间】:2014-06-02 08:01:04
【问题描述】:
请告诉我实现许多重复的 INotifyPropertyChanged 的最佳方法。 我有一个有 10 个孩子的 MainClass,每个孩子有六个字段,当自己的值发生变化时,每个字段都必须触发属性更改。 这是我的代码,但不起作用:
public class BaseModel
{
public string S1 { get; set; }
public string S2 { get; set; }
public string S3 { get; set; }
public string S4 { get; set; }
public string S5 { get; set; }
public string S6 { get; set; }
}
我使用一个名为 ViewModelBase 的类来实现 INotifyPropertyChanged。 在第二步中使用一个类来实现重复的 INotifyPropertyChanged:
public class ImplementBaseModel : ViewModelBase
{
private readonly BaseModel _baseModel;
public ImplementBaseModel()
{
_baseModel = new BaseModel();
}
public string S1
{
get { return _baseModel.S1; }
set
{
if (_baseModel.S1 == value)
return;
_baseModel.S1 = value;
base.OnPropertyChanged("S1");
}
}
public string S2
{
get { return _baseModel.S2; }
set
{
if (_baseModel.S2 == value)
return;
_baseModel.S1 = value;
base.OnPropertyChanged("S2");
}
}
// other code...
}
那么一个模型有10个这个类:
public class MidClass
{
public ImplementBaseModel ImplementBaseModel1 { get; set; }
public ImplementBaseModel ImplementBaseModel2 { get; set; }
// other field
public ImplementBaseModel ImplementBaseModel10 { get; set; }
public MidClass()
{
ImplementBaseModel1 = new ImplementBaseModel();
ImplementBaseModel2 = new ImplementBaseModel();
// ....
ImplementBaseModel10 = new ImplementBaseModel();
}
}
OK 完成代码!现在请告诉我为什么某些属性在值更改时没有被触发?是实现此代码的最佳方法吗?
【问题讨论】:
-
不要使用最好这个词。通常没有最佳解决方案。
-
对不起 BradleyDotNET 我编辑它。但没有这不是解决方案
-
您使用
base关键字来访问已更改的属性似乎也有点奇怪。只是为了确保,您是否真的击中了属性更改事件触发(使用正确的值)? -
感谢 BradleyDotNET 的每一个想法。
-
基本关键字是问题吗?