实现INotifyPropertyChanged时,导航属性是否也需要实现?

When implementing INotifyPropertyChanged, do navigation properties need to implement it too?

在实施 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 在模型上的 属性 发生变化时进行更新。所以在你的情况下,如果你有一些数据绑定到相册 属性,它必须实施 INPC,如果它有可能改变的话。您没有使用常规集合,而是有一个名为 ObservableCollection 的 class,它已经为您实现了 INPC,因此您不必这样做。