При реализации 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; }
1 ответ
Как вы понимаете, вы реализуете INotifyPropertyChanged (INPC), чтобы пользовательский интерфейс обновлялся при изменении свойства модели. Так что в вашем случае, если у вас есть нечто, связывающее данные со свойством Album, оно должно реализовать INPC, если есть вероятность, что оно может измениться. Вместо того, чтобы использовать обычную коллекцию, у вас есть класс с именем ObservableCollection, который уже реализует INPC для вас, так что вам не нужно это делать.