protected override void SetItem(int index, TItem item) { var oldItem = this[index]; ItemChanging?.Invoke(this, new ItemChangingEventArgs <TItem>(index, oldItem, item)); base.SetItem(index, item); }
protected void NotifyItemChanging(ItemChangeEventArgs args) { PrepareChange?.Invoke(this, args); ItemChanging?.Invoke(this, args); }
/// <summary> /// Updates the various tab views with the information from the selected item. /// Locks the UI until those tab views come back and confirm they've been loaded. /// </summary> /// <param name="selectedItem">The selected item</param> private async void UpdateViews(IItem item) { if (item == null) { return; } if (ItemChanging != null) { ItemChanging.Invoke(this, null); } await LockUi(); _modelLoaded = false; _texturesLoaded = false; _waitingForItemLoad = true; var textureView = TextureTabItem.Content as TextureView; var textureViewModel = textureView.DataContext as TextureViewModel; var sharedItemsView = SharedItemsTab.Content as SharedItemsView; var sharedItemsViewModel = sharedItemsView.DataContext as SharedItemsViewModel; // This guy has no funny async callback. It's ready once these awaits are done. await textureViewModel.UpdateTexture(item); var showSharedItems = await sharedItemsViewModel.SetItem(item, this); if (showSharedItems) { SharedItemsTab.IsEnabled = true; SharedItemsTab.Visibility = Visibility.Visible; } else { if (SharedItemsTab.IsSelected) { SharedItemsTab.IsSelected = false; TextureTabItem.IsSelected = true; } SharedItemsTab.IsEnabled = false; SharedItemsTab.Visibility = Visibility.Hidden; } if (item.PrimaryCategory.Equals(XivStrings.UI) || item.SecondaryCategory.Equals(XivStrings.Face_Paint) || item.SecondaryCategory.Equals(XivStrings.Equipment_Decals) || item.SecondaryCategory.Equals(XivStrings.Paintings)) { if (TabsControl.SelectedIndex == 1) { TabsControl.SelectedIndex = 0; } // No model to load, just set us as already loaded. _modelLoaded = true; ModelTabItem.IsEnabled = false; ModelTabItem.Visibility = Visibility.Hidden; } else { ModelTabItem.IsEnabled = true; ModelTabItem.Visibility = Visibility.Visible; var modelView = ModelTabItem.Content as ModelView; var modelViewModel = modelView.DataContext as ModelViewModel; await modelViewModel.UpdateModel(item as IItemModel); } }
private void OnItemChanging(object sender, ItemChangeEventArgs e) { ItemChanging?.Invoke(sender, e); }
public void OnItemChanged(ObservableListEventArgs <T> e) { ItemChanging?.Invoke(this, e); ItemChanged?.Invoke(this, e); }