Пример #1
0
        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);
        }
Пример #2
0
 protected void NotifyItemChanging(ItemChangeEventArgs args)
 {
     PrepareChange?.Invoke(this, args);
     ItemChanging?.Invoke(this, args);
 }
Пример #3
0
        /// <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);
            }
        }
Пример #4
0
 private void OnItemChanging(object sender, ItemChangeEventArgs e)
 {
     ItemChanging?.Invoke(sender, e);
 }
Пример #5
0
 public void OnItemChanged(ObservableListEventArgs <T> e)
 {
     ItemChanging?.Invoke(this, e);
     ItemChanged?.Invoke(this, e);
 }