我有一个ViewModel托管模型类的属性,其中ViewModel和模型都实现
INotifyPropertyChanged
.
模型库:
public class BaseModel : INotifyPropertyChanged
{
private int id;
public int Id
{
get { return id; }
set { id = value; OnPropertyChanged(new PropertyChangedEventArgs("Id")); }
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(PropertyChangedEventArgs propertyChangedEventArgs)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyChangedEventArgs.PropertyName));
}
}
public class ChildModel : BaseModel
{
private ObservableCollection<SubModel> positionen;
public ObservableCollection<SubModel> Positionen
{
get { return positionen; }
set { positionen = value; OnPropertyChanged(new PropertyChangedEventArgs("Positionen")); }
}
}
视图模型库:
public abstract class BaseViewModel<T> where T : BaseModel , INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(PropertyChangedEventArgs propertyChangedEventArgs)
{
PropertyChanged?.Invoke(this, propertyChangedEventArgs);
}
public abstract ObservableCollection<T> DatensatzListe { get; set; }
public abstract T AktuellerDatensatz { get; set; }
}
ViewModel child(此处属性的更新不会显示在视图中):
public class ChildViewModel : BaseViewModel<ChildModel >
{
public override ObservableCollection<ChildModel > DatensatzListe
{
get { return DatensatzListe; }
set { DatensatzListe = value; }
}
private ChildModel aktuellerDatensatz;
public override ChildModel AktuellerDatensatz
{
get { return aktuellerDatensatz; }
set { aktuellerDatensatz = value; OnPropertyChanged(new PropertyChangedEventArgs("AktuellerDatensatz")); }
}
private string tesxt;
public string Tesxt
{
get { return tesxt; }
set { tesxt = value; OnPropertyChanged(new PropertyChangedEventArgs("Tesxt")); }
}
}
如果更新代码隐藏中的Tesxt属性,则更新不会显示在视图中。我更新了AktuellerDatensatz.Id,没什么变化。