iSeller Commerce
iSeller POS Retail
iSeller POS F&B
iSeller POS Express
Crosslight
WebUI
ClientUI
What's New
Download Trial
Web Solution
Mobile Solution
Enterprise Solution
Custom Development
Blog
Community
Latest Development Blogs
ForumPostTopic
Browse By Tag
I set the SourceItems to my list and when I add more Items to the List, it doesn't update/refresh. Here is the code I'm using for the viewmodel.
I had this as a ListViewModel prior but couldn't figure it out and then looked at Batchupdate to see if I could copy the code but I'm still not getting it to update :(. I would like to use just a simple ListviewModel instead of Editable.
Not sure if I'm missing a binding.
using System.Collections.Generic; using System.Linq; using IncroudRadio.Custom; using IncroudRadio.Models; using IncroudRadio.Radio; using Intersoft.AppFramework; using Intersoft.Crosslight; using Intersoft.Crosslight.ViewModels; using System; using Intersoft.Crosslight.Input; namespace IncroudRadio.ViewModels { public class AlbumPortalListViewModel : EditableListViewModelBase<AlbumInfo> { #region fields public DelegateCommand CloseCommand { get; set; } public DelegateCommand MusicCommand { get; set; } public DelegateCommand EventsCommand { get; set; } private string _albumName; private string _albumSong; private byte[] _albumImage; public List<AlbumInfo> FullAlbumInfo; #endregion #region properties public string AlbumNameTitle { get { return _albumName; } set { _albumName = value; OnPropertyChanged("AlbumName"); } } public string AlbumSongTitle { get { return _albumSong; } set { _albumSong = value; OnPropertyChanged("AlbumSong"); } } public byte[] AlbumImage { get { return _albumImage; } set { _albumImage = value; OnPropertyChanged("radioImage"); } } #endregion #region Constructor public AlbumPortalListViewModel() { CloseCommand = new DelegateCommand(CloseView); MusicCommand = new DelegateCommand(ExecuteMusic); EventsCommand = new DelegateCommand(ExecuteEvents); AlbumNameTitle = "Lost very Lost"; AlbumSongTitle = "Lost Song"; FullAlbumInfo = new List<AlbumInfo>(); LoadAlbumArt(); //LoadEvents(); SourceItems = FullAlbumInfo; } #endregion #region Methods private async void LoadAlbumArt() { var loaderService = GetService<IImageLoaderService>(); AlbumImage = await loaderService.LoadImageAsync("http://i.telegraph.co.uk/multimedia/archive/02661/dj_2661248b.jpg", "phone.png"); } private void LoadEvents() { FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); } private void ExecuteMusic(object parameter) { IsBatchUpdating = true; FullAlbumInfo.Clear(); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "WORD", AlbumSong = "COOL ICE BABY" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "WORD", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "WORD", AlbumSong = "COOL ICE BABY" }); var items = this.SourceItems.ToObservable(); var updatedItem = items.ElementAt(0); OnDataChanged(updatedItem); IsBatchUpdating = false; } private void ExecuteEvents(object parameter) { IsBatchUpdating = true; FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); FullAlbumInfo.Add(new AlbumInfo { AlbumName = "Testing", AlbumSong = "Whats Up Baby" }); var items = this.SourceItems.ToObservable(); var updatedItem = items.ElementAt(0); OnDataChanged(updatedItem); IsBatchUpdating = false; } private void CloseView(object parameter) { NavigationService.Close(); } protected override void OnSourceItemsChanged(ICollection<AlbumInfo> items) { Items = items; RefreshGroupItems(); } #endregion } }
Binding:
#region Template Instruction /* To use this template you need to specify the binding member path for your item as follows : * - DisplayMemberPath * - DetailMemberPath * - ImageMemberPath * * You also need to replace the TViewModel placeholder for your navigation target when navigating the selected item. * * To learn more how to use this template, see http://developer.intersoftpt.com/display/crosslight/Using+Crosslight+Item+Templates */ #endregion using Intersoft.Crosslight; namespace IncroudRadio.BindingProviders { public class AlbumPortalListBindingProvider : BindingProvider { #region Constructors public AlbumPortalListBindingProvider() { var itemBinding = new ItemBindingDescription { DisplayMemberPath = "AlbumName", DetailMemberPath = "AlbumSong", // ImageMemberPath = "ImageMemberPath", // ImagePlaceholder = "image_placeholder.png", }; AddBinding("TableView", BindableProperties.ItemsSourceProperty, "Items"); AddBinding("TableView", BindableProperties.ItemTemplateBindingProperty, itemBinding, true); AddBinding("TableView", BindableProperties.SelectedItemProperty, "SelectedItem", BindingMode.TwoWay); AddBinding("EventName", BindableProperties.TextProperty, "EventName"); AddBinding("TableView", BindableProperties.IsBatchUpdatingProperty, "IsBatchUpdating", BindingMode.TwoWay); AddBinding("TableView", BindableProperties.IsEditingProperty, "IsEditing", BindingMode.TwoWay); AddBinding("AlbumLogo", BindableProperties.ImageProperty, "AlbumImage"); AddBinding("AlbumName", BindableProperties.TextProperty, "AlbumNameTitle"); AddBinding("AlbumSong", BindableProperties.TextProperty, "AlbumSongTitle"); AddBinding("BioButton", BindableProperties.CommandProperty, "BioCommand"); AddBinding("EventsButton", BindableProperties.CommandProperty, "EventsCommand"); AddBinding("MusicButton", BindableProperties.CommandProperty, "MusicCommand"); AddBinding("CloseView", BindableProperties.CommandProperty, "CloseCommand"); } #endregion } }
private void NewItem(object parameter){ IList list = this.Items as IList; list.Add(new Item() { Name = "Test Item", Category = new Category() { Name = "Camera & Photography"} }); }
Here’s the screenshot about the result:
or
Choose this if you're already a member of Intersoft Community Forum. You can link your OpenID account to your existing Intersoft Social ID.
Choose this if you don't have an Intersoft account yet. Your authenticated OpenID will be automatically linked to your new Intersoft account.
Enter your Wordpress Blogname