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