在实现INotifyPropertyChanged
(使用Prisim(时,下面的代码是有意义的,你想知道属性何时更改。
[DisplayName("Media Type Id"), Display(Name = "Media Type Id")]
public int MediaTypeId
{
get { return this._MediaTypeId; }
set { this.SetProperty(ref this._MediaTypeId, value); }
}
private int _MediaTypeId;
但是,当涉及到导航属性时,我感到困惑。
我能实现吗?对我来说,如果我要做类似的事情,这是有意义的artist.Album = new Album();
但是,如果只需要更改像artist.Album.name = "NEW_NAME"
这样的属性(假设Album.name
实现INotifyPropertyChanged
(下面的代码是否仍然必要?
[DisplayName("Album"), Display(Name = "Album")]
public Album Album
{
get { return this._Album; }
set { this.SetProperty(ref this._Album, value); }
}
private Album _Album;
或者这也行得通
public virtual Album Album { get; set; }
导航集合也是如此。
[DisplayName("Playlists"), Display(Name = "Playlists")]
public ICollection<Playlist> Playlists
{
get { return this._Playlists; }
set { this.SetProperty(ref this._Playlists, value); }
}
private ICollection<Playlist> _Playlists
或
public virtual ICollection<Playlist> Playlists { get; set; }
如您所知,您实现 INotifyPropertyChanged (INPC( 是为了在模型上的属性更改时更新 UI。因此,在您的情况下,如果您有数据绑定到 Album 属性的内容,则如果它可能会更改,则必须实现 INPC。您没有使用常规集合,而是有一个名为 ObservableCollection 的类,该类已经为您实现了 INPC,因此您不必这样做。