在实现 INotifyPropertyChanged 时,导航属性是否需要实现它



在实现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,因此您不必这样做。

相关内容

  • 没有找到相关文章

最新更新