相关疑难解决方法(0)

在上下文菜单下单击查找节点

如何找出树列表中的哪个节点已激活上下文菜单?例如,右键单击节点并从菜单中选择一个选项.

我无法使用TreeViews的SelectedNode属性,因为该节点只是右键单击而未选中.

c# treeview contextmenu winforms

69
推荐指数
4
解决办法
5万
查看次数

如何从HierarchicalDataTemplate项中获取TreeViewItem?

我有一个TreeView使用a HierarchicalDataTemplate绑定其数据.

它看起来像这样:

<TreeView x:Name="mainTreeList" ItemsSource="{Binding MyCollection}>
  <TreeView.Resources>
    <HierarchicalDataTemplate 
     DataType="{x:Type local:MyTreeViewItemViewModel}" 
     ItemsSource="{Binding Children}">
      <!-- code code code -->
    </HierarchicalDataTemplate>
  </TreeView.Resources>
</TreeView>
Run Code Online (Sandbox Code Playgroud)

现在,从主窗口的代码隐藏,我想得到当前选择TreeViewItem.但是,如果我使用:

this.mainTreeList.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

selectedItem属于类型MyTreeViewItemViewModel.但我想得到'父母'或'约束' TreeViewItem.我没有把它传递给我的TreeViewItemModel对象(甚至不知道如何).

我怎样才能做到这一点?

wpf treeview hierarchicaldatatemplate

31
推荐指数
4
解决办法
4万
查看次数

XAML Treeviewitem的上下文菜单(由不同的属性区分)

在XAML中,如何为不同属性区分的treeviewitems定义上下文菜单?

wpf xaml contextmenu treeviewitem

22
推荐指数
3
解决办法
4万
查看次数

如何在单击项目时展开WPF TreeView

现在你必须双击或点击+图标.如果用户点击它扩展的节点上的任何地方,有没有办法实现它?

wpf treeview

13
推荐指数
3
解决办法
8701
查看次数

右键单击MVVM,在treeView中选择节点

我想在右键单击中选择树视图的节点.我正在使用MVVM模式,并且不希望在后面的代码中实现这一点.这是我的树视图的XAML.

<TreeView Margin="5,0,0,5"  ItemsSource="{Binding TreePads}">
<TreeView.ItemContainerStyle >
    <Style TargetType="{x:Type TreeViewItem}">
        <Setter Property="IsSelected" Value="{Binding DataContext.IsSelected, Mode=TwoWay,  RelativeSource={RelativeSource Self}}" />
        <Setter Property="ContextMenu">
            <Setter.Value>
                <ContextMenu  DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}" >
                    <MenuItem IsEnabled="{Binding RenameMenuEnabled}" Header="Rename" Command="{Binding RenameCommand}" />
                </ContextMenu>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
            </Trigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle >
<TreeView.Resources>
    <HierarchicalDataTemplate DataType="{x:Type vm:TreePad}" ItemsSource="{Binding Members, Mode=TwoWay}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding PadName}"/>
        </StackPanel>
    </HierarchicalDataTemplate>
</TreeView.Resources>
Run Code Online (Sandbox Code Playgroud)

wpf treeview xaml

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

为什么e.Source依赖于TreeView填充方法?

我有两棵树:

  1. fooTree - 由元素组成,
  2. barTree - 由

两个树都有MouseRightButtonDown事件,但e.Source类型不同:

  1. fooTree - System.Windows.Controls.TreeViewItem
  2. barTree - System.Windows.Controls.TreeView

为什么e.Source有所不同?另外,我如何获得barTree的点击项目?

标记:

    <TreeView Name="fooTree" MouseRightButtonDown="fooTree_MouseDown">
        <TreeViewItem Header="foo"></TreeViewItem>
        <TreeViewItem Header="foo"></TreeViewItem>
    </TreeView>

    <TreeView Name="barTree" MouseRightButtonDown="barTree_MouseDown" ItemsSource="{Binding BarItems}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate>
                <TextBlock Text="{Binding}" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

码:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        this.DataContext = this;
    }

    public string[] BarItems
    {
        get { return new string[] { "bar", "bar" }; }
    }

    private void barTree_MouseDown(object sender, MouseButtonEventArgs e) 
    {
    }

    private void fooTree_MouseDown(object sender, …
Run Code Online (Sandbox Code Playgroud)

wpf treeview event-handling

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