public static void SetIsAltSelected(ExplorerTreeViewItem element, Boolean value, ExplorerTreeView treeView) { if (element == null) { return; } if (value) { //deselect previous selection var selected = ExplorerTreeView.GetAltSelectedItem(treeView); ExplorerTreeView.AltDeselectItem(treeView, element, element); } if (GetIsAltSelected(element) != value) { element.SetValue(IsAltSelectedProperty, value); element.NotifyPropertyChanged("IsAltSelected"); } object selectedobj = ExplorerTreeView.GetAltSelectedItem(treeView); if (selectedobj != null && selectedobj.Equals(element.Header)) { return; } ExplorerTreeView.SetAltSelectedItem(treeView, value ? element.Header : null); }
public static void AltDeselectItem(ExplorerTreeView treeView, ExplorerTreeViewItem treeViewItem, ExplorerTreeViewItem skip) { if (treeView != null) { for (int i = 0; i < treeView.Items.Count; i++) { if (treeView.ItemContainerGenerator.ContainerFromIndex(i) is ExplorerTreeViewItem item) { if (item != skip) { ExplorerTreeViewItem.SetIsAltSelected(item, false, treeView); } AltDeselectItem(null, item, skip); } } } else { for (int i = 0; i < treeViewItem.Items.Count; i++) { if (treeViewItem.ItemContainerGenerator.ContainerFromIndex(i) is ExplorerTreeViewItem item) { if (item != skip) { ExplorerTreeViewItem.SetIsAltSelected(item, false, treeView); } AltDeselectItem(null, item, skip); } } } }
protected override void OnPreviewMouseLeftButtonUp(MouseButtonEventArgs e) { base.OnPreviewMouseRightButtonDown(e); var treeViewItem = FindTreeViewItem(e.OriginalSource as DependencyObject); if (treeViewItem == _selectTreeViewItemOnMouseUp) { ExplorerTreeViewItem.SetIsAltSelected(treeViewItem, true, this); } }
protected override void OnPreviewMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnPreviewMouseLeftButtonDown(e); var treeViewItem = FindTreeViewItem(e.OriginalSource as DependencyObject); if (treeViewItem != null) { _selectTreeViewItemOnMouseUp = treeViewItem; } }
private static void OnAltSelectedItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var treeViewItem = d as ExplorerTreeViewItem; var treeView = FindTreeView(treeViewItem); if (treeViewItem != null && treeView != null) { var selectedItem = GetAltSelectedItem(treeView); if (selectedItem != null) { if (ExplorerTreeViewItem.GetIsAltSelected(treeViewItem)) { SetAltSelectedItem(treeView, treeViewItem.Header); } else { SetAltSelectedItem(treeView, null); } } } }
protected override void OnGotFocus(RoutedEventArgs e) { base.OnGotFocus(e); if (e.OriginalSource is ExplorerTreeView) { return; } var treeViewItem = FindTreeViewItem(e.OriginalSource as DependencyObject); if (treeViewItem == null) { return; } if (Mouse.LeftButton == MouseButtonState.Pressed && ExplorerTreeViewItem.GetIsAltSelected(treeViewItem)) { _selectTreeViewItemOnMouseUp = treeViewItem; } }
protected override void PrepareContainerForItemOverride(DependencyObject element, object item) { base.PrepareContainerForItemOverride(element, item); var ei = item as FSExplorerItem; var rootcontrol = element; FSExplorerTree tvRoot = null; while (true) { if (!(rootcontrol is Visual || rootcontrol is Visual3D)) { break; } if (rootcontrol is FSExplorerTree) { tvRoot = rootcontrol as FSExplorerTree; break; } else { rootcontrol = VisualTreeHelper.GetParent(rootcontrol); if (rootcontrol == null) { break; } continue; } } ExplorerTreeViewItem tvi = element as ExplorerTreeViewItem; if (tvRoot != null && tvRoot.ShowFiles == false && ei != null && !ei.IsDirectory) { tvi.Visibility = Visibility.Collapsed; } //else tvi.Visibility = ei.Visibility; }
public static bool GetIsAltSelected(ExplorerTreeViewItem element) { return((bool)element.GetValue(IsAltSelectedProperty)); }