protected override void SelectionChanged(IList <int> selectedIds) { int id = selectedIds.Count > 0 ? selectedIds[0] : -1; TreeViewItem item = FindItem(id, rootItem); ShipTypeGroupItem typeGroupItem = item as ShipTypeGroupItem; ShipTypeItem shipItem = item as ShipTypeItem; selectionChanged?.Invoke(new ShipTreeViewSelection(typeGroupItem?.shipTypeGroup, shipItem?.shipType)); }
private void OnShipTypeDrop(ShipType shipType, TreeViewItem droppedOn, int index) { if (droppedOn is ShipTypeItem) { ShipTypeItem dropShipItem = (ShipTypeItem)droppedOn; //setShipTypeShipGroup?.Invoke(shipType, dropShipItem.shipType.shipGroupId, index); } else if (droppedOn is ShipTypeGroupItem) { //setShipTypeShipGroup?.Invoke(shipType, ((ShipTypeGroupItem)droppedOn).shipTypeGroup.id, index); } }
protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args) { if (args.performDrop) { TreeViewItem droppedOn = args.parentItem; TreeViewItem droppedItem = FindItem((int)DragAndDrop.GetGenericData("ShipTreeView"), rootItem); ShipTypeItem item = droppedItem as ShipTypeItem; if (item != null) { OnShipTypeDrop(item.shipType, droppedOn, args.insertAtIndex); } else if (droppedItem is ShipTypeGroupItem) { GameDatabase.ActiveInstance.SetAssetIndex(((ShipTypeGroupItem)droppedItem).shipTypeGroup, args.insertAtIndex); } } return(DragAndDropVisualMode.Move); }