标签: treeviewitem

处理过的RoutedEvent继续冒泡树

我正在开发一个TreeView基于控件,我的双击事件继续冒泡我的TreeViewItem节点.

目标是TreeViewItem双击时展开或折叠.

我有一个样式,将事件的事件处理程序应用于MouseDoubleClick每个TreeViewItem.

这是处理事件的代码


private void TreeViewItemDoubleClicked( object sender, RoutedEventArgs e )
{
    // Get the specific tree view item that was double clicked
    TreeViewItem treeViewItem = sender as TreeViewItem;

    // not null?
    if( null != treeViewItem )
    {
         // Switch expanded state
         if( true == treeViewItem.IsExpanded )
         {
             treeViewItem.IsExpanded = false;
         }
         else
         {
             treeViewItem.IsExpanded = true;
         }

         // Set event handled
         e.Handled = true; // [1]
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview routedevent treeviewitem

5
推荐指数
1
解决办法
1386
查看次数

右键单击GtkTreeView的行

当用户右键单击树视图行时,如何执行某些操作?

pygtk click right-click treeviewitem gtktreeview

5
推荐指数
1
解决办法
2755
查看次数

更改展开和折叠图像TreeView JavaFX 2.2

是否可以更改JavaFX 2.2 TreeVIew的展开和折叠图像?

更改此图片,

有效的XHTML

对于这样的图像(带+/-),

有效的XHTML

java expand image treeviewitem javafx-2

5
推荐指数
1
解决办法
5250
查看次数

WPF树视图项目背景在整个行上

我正在编写一个应用程序,我需要在整个行中按项目设置背景。我在这里找到了一些灵​​感,但我不知道如何在模板中获得边框背景值(问题有点复杂:)

我的问题是在树形视图中有两种类型的“数据”(文件和文件夹)。用户可以在文件和文件夹下修改背景。

现在,我在textblock上有背景,但它看起来很可怕,我想在整行中都具有背景(我认为它看起来会好得多)。

现在看来是这样的:
img1

但是我需要的是:
img2

如果我更改边框背景的值,则会更改所有项目(从逻辑上)。所以我想我真的需要使用textblock背景,但是我无法遍及整个行(stretch不是解决方案,因为它只是将其传播到行的末尾而不是之前的空白)。

谢谢你的建议。

编辑: XAML在这里:

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:treeView">
<!-- TREEVIEW  -->
    <Style x:Key="ExpandCollapseToggleStyle" TargetType="ToggleButton">
        <Setter Property="Focusable" Value="False"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Grid
          Width="15"
          Height="13"
          Background="Transparent">
                        <!--<Path x:Name="ExpandPath"
            HorizontalAlignment="Left" 
            VerticalAlignment="Center" 
            Margin="1,1,1,1"
            Fill="Red"
            Data="M 4 0 L 8 4 L 4 8 Z"/>-->
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked"
               Value="True">
                            <!--<Setter Property="Data"
                TargetName="ExpandPath"
                Value="M 0 4 L 8 4 L 4 8 Z"/>-->
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style x:Key="TreeViewItemFocusVisual">
        <Setter Property="Control.Template">
            <Setter.Value>
                <ControlTemplate>
                    <Border> …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview wpf-controls treeviewitem

5
推荐指数
2
解决办法
9727
查看次数

绑定到TreeViewItem.IsExpanded.为什么这样做?

我觉得我在WPF数据绑定中缺少一些基本概念.我的装订是否会对我有用,这总是一杆三风.

在此示例中,我希望将TreeViewItem的IsExpanded属性双向绑定到绑定对象上的相应属性.它确实适用于第一个例子; 它与第二个没有关系.

有谁能解释为什么?我无法理解为什么第二个版本不起作用.如果可以的话,我不禁想到它会拯救我无尽的悲伤.

这在放入UserControl.Resources时有效(绑定到IsExpanded是通过应用于TreeViewItem的Style完成的:

    <Style TargetType="TreeViewItem">
        <Setter Property="IsExpanded" 
              Value="{Binding Path=IsExpanded, Mode=TwoWay}" />
    </Style>
    <DataTemplate DataType="{x:Type viewModels:FolderItem}">
        <TreeViewItem ItemsSource="{Binding Folders}" 
           IsExpanded="{Binding Mode=TwoWay,Path=IsExpanded}" >
            <TreeViewItem.Header>
                <StackPanel Orientation="Vertical">
                    <Image Source="{Binding IconSource}" 
                          Width="16" Height="16" 
                           Margin="4,0,4,0" VerticalAlignment="Center" />
                    <TextBlock Text="{Binding Title}" 
                            VerticalAlignment="Center" />
                </StackPanel>
            </TreeViewItem.Header>
        </TreeViewItem>
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

这不(在数据模板中直接绑定到IsExpanded):

    <DataTemplate DataType="{x:Type viewModels:FolderItem}">
        <TreeViewItem ItemsSource="{Binding Folders}" 
           IsExpanded="{Binding Path=IsExpanded,Mode=TwoWay}" >
            <TreeViewItem.Header>
                <StackPanel Orientation="Vertical">
                    <Image Source="{Binding IconSource}" 
                          Width="16" Height="16" Margin="4,0,4,0"
                          VerticalAlignment="Center" />
                    <TextBlock Text="{Binding Title}"
                        VerticalAlignment="Center" />
                </StackPanel>
            </TreeViewItem.Header>
        </TreeViewItem>
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

DataTemplate用于以下Xaml片段,上面给出的数据模板用于执行数据转换.Documents是已正确绑定的FolderItems的可观察列表.

   <TreeView ItemsSource="{Binding Documents}" />
Run Code Online (Sandbox Code Playgroud)

两个DataTemplates都显示文件树.但在第二种情况下,IsExpanded没有绑定(双向或其他方式).

未显示FileTtem的DataTemplating,它是FolderItem的叶节点.

wpf treeviewitem

5
推荐指数
1
解决办法
3979
查看次数

是否可以基于函数动态生成JavaFX TreeItem的子项?

介绍:

我目前正在研究TreeViewJavaFX中的第一个.

文档中给出的示例如下:

 TreeItem<String> root = new TreeItem<String>("Root Node");
 root.setExpanded(true);
 root.getChildren().addAll(
     new TreeItem<String>("Item 1"),
     new TreeItem<String>("Item 2"),
     new TreeItem<String>("Item 3")
 );
 TreeView<String> treeView = new TreeView<String>(root);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我们TreeItem手动构建树结构,即调用getChildren()每个有子节点的节点并添加它们.

题:

是否有可能告诉TreeItem他"动态"建立自己的孩子?如果我可以将父子关系定义为函数,那将是完美的.

我会寻找类似以下的东西:

// Function that generates the child tree items for a given tree item
Function<TreeItem<MyData>, List<TreeItem<MyData>>> childFunction = parent -> {
  List<TreeItem<MyData>> children = new ArrayList<>(
    parent.                                                    // TreeItem<MyData>
      getValue().                                              // MyData
      getChildrenInMyData().                                   // List<MyData>
      stream().
      map(myDataChild -> new TreeItem<MyData>(myDataChild)))); // List<TreeItem<MyData>>
  // …
Run Code Online (Sandbox Code Playgroud)

java treeview javafx treeviewitem javafx-8

5
推荐指数
1
解决办法
257
查看次数

在分层TreeView中更改突出显示颜色

我有一个带有HierarchicalDataTemplate的TreeView.

<HierarchicalDataTemplate x:Key="treeViewItemTemplate" ItemsSource="{Binding GetChildren}">
    <DockPanel Margin="0,8,8,0">
        <Image Source="{Binding GetImage}" Width="16" Height="16" />
        <local:MonitorTriStateCheckBox Margin="4,0,0,0" IsChecked="{Binding IsChecked}" Click="CheckBox_Clicked" Tag="{Binding UniqueKey}" Style="{DynamicResource CheckBox}"></local:MonitorTriStateCheckBox>
        <TextBlock Margin="4,0,0,0" Text="{Binding Name}" Style="{DynamicResource TextBlock}">
        </TextBlock>
    </DockPanel>
    <HierarchicalDataTemplate.Triggers>
        <Trigger Property="TreeViewItem.IsSelected" Value="True">
            <Setter Property="TreeViewItem.Background" Value="Orange" />
        </Trigger>
    </HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

正如您在代码中看到的,我设置了TreeViewItem的选择触发器,但这没有任何效果.我试过这个:

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
        <Setter Property="Visibility" Value="{Binding IsVisible, Mode=TwoWay}" />
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="Background" Value="Orange" />
            </Trigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)

但那也没有效果.

有没有人知道该怎么做,改变TreeViewItem的高亮颜色?

.net wpf treeview highlight treeviewitem

4
推荐指数
1
解决办法
9803
查看次数

在TreeViewItem单击上激活命令,VSCode扩展

我想在树状视图项目上单击而不是在出现的菜单中运行命令。现在在我的package.json中,我有这个:

    {
      "command": "test.view.showError",
      "when": "view == test.view && viewItem == test",
      "group": "inline"
    }
Run Code Online (Sandbox Code Playgroud)

现在,“ inline”将在您必须单击以运行命令的单词旁边放置一个图标,但是我希望在单击节点本身时运行该命令。

我将“组”更改为什么?还是我做完全不同的事情?

谢谢

treeview treeviewitem visual-studio-code vscode-extensions

4
推荐指数
1
解决办法
530
查看次数

命中测试TTreview加/减(折叠/展开)图标 - 德尔福

我在Delphi中使用TTreeview组件,我已经定制了拖放功能.我开始向下拖动鼠标(因为它是自定义行为),但我不想在用户单击+/-或展开和折叠图标时启动拖动事件.

有没有办法知道用户是否点击了节点的标题或者展开/折叠图标?

谢谢!

delphi treeviewitem

3
推荐指数
1
解决办法
1254
查看次数

带拉伸的 TreeViewItem

我想创建一个 WPF TreeView,其中包含可拉伸以填充可用空间的 TreeViewItems。我以此为指导修改了 TreeViewItem 模板:https://social.msdn.microsoft.com/Forums/vstudio/en-US/cabcb3ba-80c0-4367-85b7-9b55adc81e65/stretch-treeview-items ?forum=wpf这很有效,因为我希望右侧的一个字符网格组件右对齐,并且长 TextBlock 占用可用空间 - 请参阅下面的代码,其中我的 TreeViewItems 之一的标题是网格。

但是,当我通过将右侧拖动到左侧来调整窗口大小时,当没有足够的空间容纳所有网格组件时,我期望长的 TextBlock 内容为“长长的,... " 开始缩小宽度,但右侧的 TextBlock 却被右侧窗口边缘切断。

如果我创建一个具有网格的全新示例,并将上面提到的网格放入其中一个网格单元格中(本质上是模拟 TreeView 模板中使用的网格),那么它会按照我的预期调整大小:当我调整大小时,TextBlock 的宽度会缩小。

有什么想法可以对 TreeViewItem 模板或我指定的标题进行哪些更改以获得我想要的大小调整行为?

<Window x:Class="TreeViewSimple3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TreeViewSimple3"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">

<Window.Resources>
    <ControlTemplate x:Key="TreeViewItemStretchControlTemplate" TargetType="{x:Type TreeViewItem}">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition MinWidth="19" Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <ToggleButton x:Name="Expander" ClickMode="Press" IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}">
                <ToggleButton.Style>
                    <Style TargetType="{x:Type ToggleButton}">
                        <Setter Property="Focusable" Value="False"/>
                        <Setter Property="Width" Value="16"/>
                        <Setter Property="Height" Value="16"/>
                        <Setter …
Run Code Online (Sandbox Code Playgroud)

wpf treeview xaml treeviewitem

3
推荐指数
1
解决办法
1768
查看次数