相关疑难解决方法(0)

在显示ContextMenu之前,右键单击选择TreeView节点

我想在显示ContextMenu之前右键单击选择一个WPF TreeView节点.

对于WinForms,我可以使用这样的代码在上下文菜单下点击查找节点,WPF的替代方案是什么?

wpf treeview contextmenu

94
推荐指数
7
解决办法
6万
查看次数

在HierarchicalDataTemplate应用的WPF TreeView中绑定SelectedItem

我有一个数据绑定TreeView,我想绑定SelectedItem.这种附加的行为工作完全没有HierarchicalDataTemplate,但与它连接的行为只能单向(UI数据)不是别的,因为现在e.NewValueMyViewModel不是TreeViewItem.

这是附加行为的代码段:

private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
    var item = e.NewValue as TreeViewItem;
    if (item != null)
    {
        item.SetValue(TreeViewItem.IsSelectedProperty, true);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的TreeView定义:

<Window xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
    <TreeView ItemsSource="{Binding MyItems}" VirtualizingStackPanel.IsVirtualizing="True">
        <interactivity:Interaction.Behaviors>
            <behaviors:TreeViewSelectedItemBindingBehavior SelectedItem="{Binding SelectedItem, Mode=TwoWay}" />
        </interactivity:Interaction.Behaviors>
        <TreeView.Resources>
            <HierarchicalDataTemplate DataType="{x:Type local:MyViewModel}" ItemsSource="{Binding Children}">
                <TextBlock Text="{Binding Name}"/>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>
</Window>
Run Code Online (Sandbox Code Playgroud)

如果我可以获得TreeView对附加行为方法的引用OnSelectedItemChanged,也许我可以使用此问题中的答案来获取TreeViewItem但我不知道如何到达那里.有谁知道如何以及它是正确的方式去?

data-binding wpf treeview hierarchicaldatatemplate treeviewitem

13
推荐指数
1
解决办法
9301
查看次数

WPF treeview:如何在资源管理器中实现键盘导航?

我是第一次使用WPF树视图,并对它没有做的所有基本事情感到惊讶.其中之一是键盘导航,在任何自尊的树视图中实现,例如在Windows资源管理器或Regedit中.

这是它应该如何工作:

如果树视图具有焦点并且我键入(字母/数字),则选择应移动到当前所选项目下方的第一个可见(也称为展开)项目,该项目与我键入的字符串匹配并将其带入视图.如果在当前项目下方找不到匹配项,则搜索应从顶部继续.如果未找到匹配项,则不应更改所选项目.

只要我继续输入,搜索字符串就会增长并且搜索会被细化.如果我停止输入特定时间(2-5秒),则清空搜索字符串.

我准备从头开始"手工"编程,但由于这是非常基本的,我想当然有人已经做到了这一点.

navigation keyboard wpf treeview

7
推荐指数
1
解决办法
4880
查看次数

仅当树项的父项是列表中的第一项时,将命令标记为不可用的WPF方法是什么?

我有一个表示某些项目的树视图.这棵树总是两层深.子项的右键单击菜单具有"向上移动"命令.UI允许您向上移动子项,即使它是其父项的第一项,只要在父级别上有另一项,在所选项的父项之上.

显而易见的方法是获取所选项目的父项,并查看其上方是否有项目.但是,在WPF中获取所选项目的父项是微不足道的.同样,显而易见的(对于WPF初学者,无论如何)方法是获取TreeViewItem具有Parent属性的所选项目.不幸的是,这也很难做到.

从那些说这很难的人那里得到暗示,因为我做错了,我决定问那些对WPF更有经验的人:什么是正确的,非硬的方法呢?逻辑上它是微不足道的,但我无法弄清楚处理WPF API的正确方法.

wpf treeview

2
推荐指数
1
解决办法
698
查看次数