public SearchVideoByMylistViewModel(SearchVideoByMylistModel model) : base(model) { Source = model; Source.AddOnPropertyChanged(this, OnPropertyChanged); this.Word = Source.MylistId; this.MylistTitle = Source.MylistTitle; this.MylistCreator = Source.MylistCreator; this.MylistDescription = Source.MylistDescription; this.UserId = Source.UserId; this.UserThumbnail = Source.UserThumbnail; this.MylistDate = Source.MylistDate; Items = Source.Videos.ToSyncedSynchronizationContextCollection( id => new VideoItemViewModel(id), AnonymousSynchronizationContext.Current ); SortItems = ComboSortMylistModel .Instance .Items .ToSyncedSynchronizationContextCollection(m => m, AnonymousSynchronizationContext.Current); SelectedSortItem = SettingModel.Instance.SearchVideoByMylistSort; OnSearch.Execute(null); }
public SearchVideoByMylistViewModel(SearchVideoByMylistModel source) { Source = source; Sort = ComboVMylistSortModel.Instance; Videos = Source.Videos.ToSyncedSynchronizationContextCollection( video => new VideoViewModel(video), AnonymousSynchronizationContext.Current ); if (!string.IsNullOrEmpty(Source.MylistId)) { Word = Source.MylistId; } MylistTitle = Source.MylistTitle; MylistCreator = Source.MylistCreator; MylistDescription = Source.MylistDescription; UserId = Source.UserId; UserThumbnail = Source.UserThumbnail; MylistDate = Source.MylistDate; // モデル側で変更があったら通知する Source.AddOnPropertyChanged(this, (sender, e) => { switch (e.PropertyName) { case nameof(Source.MylistId): Word = source.MylistId; break; case nameof(MylistTitle): MylistTitle = Source.MylistTitle; break; case nameof(MylistCreator): MylistCreator = Source.MylistCreator; break; case nameof(MylistDescription): MylistDescription = Source.MylistDescription; break; case nameof(UserId): UserId = Source.UserId; break; case nameof(UserThumbnail): UserThumbnail = Source.UserThumbnail; break; case nameof(MylistDate): MylistDate = Source.MylistDate; break; } }); }
private void Initialize(SearchVideoByMylistModel model) { Source = model; Source.AddOnPropertyChanged(this, OnPropertyChanged); this.MylistId = Source.MylistId; this.MylistTitle = Source.MylistTitle; this.MylistCreator = Source.MylistCreator; this.MylistDescription = Source.MylistDescription; this.UserId = Source.UserId; this.UserThumbnailUrl = Source.UserThumbnailUrl; this.MylistDate = Source.MylistDate; this.UserThumbnail = Source.UserThumbnail; }
public MylistViewModel(SearchVideoByMylistModel source) { Source = source; // 初期値設定 MylistTitle = Source.MylistTitle; MylistCreator = Source.MylistCreator; MylistDescription = Source.MylistDescription; UserId = Source.UserId; UserThumbnail = Source.UserThumbnail; MylistDate = Source.MylistDate; // モデル側で変更があったら通知する Source.AddOnPropertyChanged(this, (sender, e) => { switch (e.PropertyName) { case nameof(MylistTitle): MylistTitle = Source.MylistTitle; break; case nameof(MylistCreator): MylistCreator = Source.MylistCreator; break; case nameof(MylistDescription): MylistDescription = Source.MylistDescription; break; case nameof(UserId): UserId = Source.UserId; break; case nameof(UserThumbnail): UserThumbnail = Source.UserThumbnail; break; case nameof(MylistDate): MylistDate = Source.MylistDate; break; } }); }
/// <summary> /// 共通の追加処理 /// </summary> /// <param name="url">追加するURL</param> private async Task AddMylist(string url) { var mylist = NicoUtil.ToContentId(url); if (SearchMylistModel.Instance.Favorites.Any(f => f.Mylist == mylist)) { return; } var model = new SearchVideoByMylistModel(); await model.Reload(url); if (!model.Videos.Any()) { ServiceFactory.MessageService.Error("データ件数が0件"); } else { await SearchMylistModel.Instance.AddFavorite(mylist); } }
public MylistItemViewModel(SearchVideoByMylistModel model) : base(model) { Initialize(model); }