protected override void ProcessKeyDown(KeyRoutedEventArgs args) { var currentKey = args.Key; if (TreeGrid.FlowDirection == FlowDirection.RightToLeft) { ChangeFlowDirectionKey(ref currentKey); } var previousCurrentCellIndex = this.CurrentCellManager.CurrentRowColumnIndex; var node = TreeGrid.GetNodeAtRowIndex(this.CurrentCellManager.CurrentRowColumnIndex.RowIndex); if (currentKey == Key.Left || currentKey == Key.Right) { if (this.CurrentCellManager.CurrentRowColumnIndex.RowIndex <= this.TreeGrid.GetHeaderIndex()) { return; } if (node != null) { if (node.IsExpanded && currentKey == Key.Left) { TreeGrid.CollapseNode(node); } else if (!node.IsExpanded && currentKey == Key.Right) { TreeGrid.ExpandNode(node); } } args.Handled = true; return; } else if (currentKey == Key.Space) { if (node != null) { var isCheckedValue = node.IsChecked; if (isCheckedValue == true) { //node.SetCheckedState(null); node.SetCheckedState(false); } else if (isCheckedValue == null) { node.SetCheckedState(false); } else { node.SetCheckedState(true); } } args.Handled = true; return; } base.ProcessKeyDown(args); }
protected override void ProcessOnTapped(MouseButtonEventArgs e, RowColumnIndex currentRowColumnIndex) { if (currentRowColumnIndex.RowIndex <= this.TreeGrid.GetHeaderIndex()) { return; } var node = TreeGrid.GetNodeAtRowIndex(currentRowColumnIndex.RowIndex); if (node != null) { if (node.IsExpanded) { TreeGrid.CollapseNode(node); } else if (!node.IsExpanded) { TreeGrid.ExpandNode(node); } } base.ProcessOnTapped(e, currentRowColumnIndex); }