private void TreeView_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { //Check if it is a leaf first and not an intermediary node if (typeof(ViewerTreeItemDescriptor) == e.NewValue.GetType()) { _selectedItem = (ViewerTreeItemDescriptor)e.NewValue; DrawSelectedItem(); } }
private void LoadTreeItemsWoker_DoWork(object sender, DoWorkEventArgs e) { _treeItemsList = new List <ViewerTreeItemDescriptor>(); for (int nModIndex = 0; nModIndex < App.I.ModsPrefix.Count; nModIndex++) { for (int nTableIndex = 0; nTableIndex < (int)EDBTable.eTotal; nTableIndex++) { EDBTable eDBTable = (EDBTable)nTableIndex; string strTableNamePrefix = App.I.ModsPrefix[nModIndex]; string strTableNameSufix = DBTableAttributtesFetcher.GetNameSufix(eDBTable); string strTableName = string.Format("{0}_{1}", strTableNamePrefix, strTableNameSufix); List <string> strColumnsList = DBTableAttributtesFetcher.GetTreeViewDecriptiveColumnsNames(eDBTable); //Get items from mem DB List <object[]> listColumnsValuesTable = App.DB.GetAllTableDataOfSpecificColumnsFromMemory(strTableName, strColumnsList); if (listColumnsValuesTable.Count > 0) { //Now check if the collection already have the type int nByTypeTypeIndex = GetTier1NodeIndex(ByTypeTreeData, strTableNameSufix); //Now check if the Tier1 collection already have the mod int nByTypeModIndex = GetTier2NodeIndex(ByTypeTreeData[nByTypeTypeIndex].Tier2, strTableNamePrefix); //Now check if the collection already have the mod int nByModModIndex = GetTier1NodeIndex(ByModTreeData, strTableNamePrefix); //Now check if the Tier1 collection already have the type int nByModTypeIndex = GetTier2NodeIndex(ByModTreeData[nByModModIndex].Tier2, strTableNameSufix); //Now for each item we will create a new ViewerTreeItemDescriptor object and add it to the trees listColumnsValuesTable.ForEach(item => { int nByTypeItemIndex = ByTypeTreeData[nByTypeTypeIndex].Tier2[nByTypeModIndex].Items.Count; int nByModItemIndex = ByModTreeData[nByModModIndex].Tier2[nByModTypeIndex].Items.Count; int[] nTreeIndexByType = new int[3] { nByTypeTypeIndex, nByTypeModIndex, nByTypeItemIndex }; int[] nTreeIndexByMod = new int[3] { nByModModIndex, nByModTypeIndex, nByModItemIndex }; ViewerTreeItemDescriptor newItem = new ViewerTreeItemDescriptor(item, eDBTable, nModIndex, nTreeIndexByType, nTreeIndexByMod, strTableName); _treeItemsList.Add(newItem); ByTypeTreeData[nByTypeTypeIndex].Tier2[nByTypeModIndex].Items.Add(newItem); ByModTreeData[nByModModIndex].Tier2[nByModTypeIndex].Items.Add(newItem); }); } } } }
private void TabControlViewer_SelectionChanged(object sender, SelectionChangedEventArgs e) { _eTreeMode = (ETreeMode)TabControlViewer.SelectedIndex; // Check if we need to redraw the viewer data renderer ViewerTreeItemDescriptor selectedItem = null; switch (_eTreeMode) { case ETreeMode.eByMods: selectedItem = (ViewerTreeItemDescriptor)TreeViewViewerMods.SelectedItem; break; case ETreeMode.eByTypes: selectedItem = (ViewerTreeItemDescriptor)TreeViewViewerTypes.SelectedItem; break; } if (selectedItem != null && _selectedItem != selectedItem) { _selectedItem = selectedItem; DrawSelectedItem(); } }