public HomePageViewModel(INavigationService navigationService, IItemListService itemListService, IEventAggregator eventAggregator) : base(navigationService) { _itemListService = itemListService; _eventAggregator = eventAggregator; Title = "ホーム"; Items = _itemListService.Items.ToReadOnlyReactiveCollection(i => new ItemViewModel(i)).AddTo(_disposables); LoadMoreCommand.Subscribe(async item => { if (item == Items?.LastOrDefault()) { await _itemListService.LoadAsync(); } }); GoToContributionPageCommand.Subscribe(async() => await NavigateAsync <ContributionPageViewModel>()); GoToItemDetailPageCommand.Subscribe(async viewModel => await NavigateAsync <ItemDetailPageViewModel, string>(viewModel.Id.Value)); _eventAggregator.GetEvent <DestoryEvent>().Subscribe(_itemListService.Close) .AddTo(_disposables); _itemListService.LoadAsync(); }
public MyPageViewModel(INavigationService navigationService, IUserItemListService userItemListService, IAccountService accountService, IEventAggregator eventAggregator) : base(navigationService) { _userItemListService = userItemListService; _accountService = accountService; _eventAggregator = eventAggregator; Title = "マイページ"; _userItemListService.SetUserId(_accountService.UserId.Value); Items = _userItemListService.Items.ToReadOnlyReactiveCollection(i => new ItemViewModel(i)).AddTo(_disposables); UserName = _accountService.UserName; UserImage = _accountService.UserImage; ContributionCount = _accountService.ContributionCount; LoadMoreCommand.Subscribe(async item => { if (item == Items?.LastOrDefault()) { await _userItemListService.LoadAsync(); } }); GoToItemDetailPageCommand.Subscribe(async viewModel => await NavigateAsync <ItemDetailPageViewModel, string>(viewModel.Id.Value)); _eventAggregator.GetEvent <DestoryEvent>().Subscribe(_userItemListService.Close) .AddTo(_disposables); _userItemListService.LoadAsync(); }
public DemoPageViewModel(IPageDialogService pageDialog, IToast toast) { _toast = toast; _pageDlg = pageDialog; var list1 = new List <PhotoItem>(); for (var i = 0; i < 20; i++) { list1.Add(new PhotoItem { PhotoUrl = $"https://kamusoft.jp/openimage/nativecell/{i + 1}.jpg", Title = $"Title {i + 1}", Category = "AAA", }); } var list2 = new List <PhotoItem>(); for (var i = 10; i < 15; i++) { list2.Add(new PhotoItem { PhotoUrl = $"https://kamusoft.jp/openimage/nativecell/{i + 1}.jpg", Title = $"Title {i + 1}", Category = "BBB", }); } var list3 = new List <PhotoItem>(); for (var i = 5; i < 20; i++) { list3.Add(new PhotoItem { PhotoUrl = $"https://kamusoft.jp/openimage/nativecell/{i + 1}.jpg", Title = $"Title {i + 1}", Category = "CCC", }); } var group1 = new PhotoGroup(list1) { Head = "SectionA" }; var group2 = new PhotoGroup(list2) { Head = "SectionB" }; var group3 = new PhotoGroup(list3) { Head = "SectionC" }; ItemsSource.Add(group1); ItemsSource.Add(group2); ItemsSource.Add(group3); ItemsSourceH.Add(group1); ItemsSourceH.Add(group2); TapCommand.Subscribe(async item => { var photo = item as PhotoItem; await _pageDlg.DisplayAlertAsync("", $"Tap {photo.Title}", "OK"); }); LongTapCommand.Subscribe(async item => { var photo = item as PhotoItem; await _pageDlg.DisplayAlertAsync("", $"LongTap {photo.Title}", "OK"); }); RefreshCommand.Subscribe(async _ => { await Task.Delay(3000); IsRefreshing.Value = false; }); NextCommand.Subscribe(NextAction); var loadCount = 1; LoadMoreCommand.Subscribe(_ => { if (loadCount == 10) { SetEndLoadMore(true); return; } var list = new List <PhotoItem>(); for (var i = 5; i < 20; i++) { list.Add(new PhotoItem { PhotoUrl = $"https://kamusoft.jp/openimage/nativecell/{i + 1}.jpg", Title = $"Title {i + 1}", Category = "XXX", }); } var group = new PhotoGroup(list) { Head = $"SectionX{loadCount}" }; ItemsSource.Add(group); SetEndLoadMore(false); loadCount++; }); var loadHCount = 1; LoadMoreHCommand.Subscribe(_ => { if (loadHCount == 10) { SetEndLoadMoreH(true); return; } var list = new List <PhotoItem>(); for (var i = 5; i < 20; i++) { list.Add(new PhotoItem { PhotoUrl = $"https://kamusoft.jp/openimage/nativecell/{i + 1}.jpg", Title = $"Title {i + 1}", Category = "XXX", }); } var group = new PhotoGroup(list) { Head = $"SectionX{loadHCount}" }; ItemsSourceH.Add(group); SetEndLoadMoreH(false); loadHCount++; }); SetDemoItems(); }