private void ExpandFolder(TreeViewItem item) { item.Items.Clear(); try { foreach (string dir in Directory.GetDirectories(((TreeNode)item.Tag).Path)) { TreeViewItem subitem = new TreeViewItem { Header = dir.Substring(dir.LastIndexOf("\\") + 1), Tag = new TreeNode() { Type = NodeDataType.Folder, Path = dir }, FontWeight = FontWeights.Normal, }; if (ThumbMarker.HasThumpMarker(dir)) { subitem.Foreground = new SolidColorBrush(Colors.Orange); } subitem.Items.Add(null); subitem.Expanded += new RoutedEventHandler(Folder_Expanded); item.Items.Add(subitem); } foreach (string file in Directory.GetFiles(((TreeNode)item.Tag).Path)) { TreeViewItem subitem = new TreeViewItem { Header = Path.GetFileName(file), Tag = new TreeNode() { Type = NodeDataType.File, Path = file }, FontWeight = FontWeights.Normal, }; item.Items.Add(subitem); } } catch (Exception ex) { Log.Instance.Error(ex); } }
private void LeftTree_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e) { if (sender is TreeView tv) { if (tv.SelectedItem is TreeViewItem selectedItem) { if (selectedItem.Tag is TreeNode tag) { switch (tag.Type) { case NodeDataType.Folder: var contextMenu = leftTree.Resources["sourceTreeContext"] as ContextMenu; if (ThumbMarker.HasThumpMarker(tag.Path)) { (contextMenu.Items[2] as MenuItem).Visibility = Visibility.Collapsed; (contextMenu.Items[3] as MenuItem).Visibility = Visibility.Visible; } else { (contextMenu.Items[2] as MenuItem).Visibility = Visibility.Visible; (contextMenu.Items[3] as MenuItem).Visibility = Visibility.Collapsed; } leftTree.ContextMenu = contextMenu; break; default: leftTree.ContextMenu = null; break; } } } } }