标签: treeview

数据绑定到WPF Treeview中的SelectedItem

如何检索在WPF树视图中选择的项目?我想在XAML中这样做,因为我想绑定它.

你可能会认为它SelectedItem显然是不存在的只是readonly因此无法使用.

这就是我想要做的:

<TreeView ItemsSource="{Binding Path=Model.Clusters}" 
            ItemTemplate="{StaticResource ClusterTemplate}"
            SelectedItem="{Binding Path=Model.SelectedCluster}" />
Run Code Online (Sandbox Code Playgroud)

我想绑定SelectedItem到我的模型上的属性.

但这给了我错误:

'SelectedItem'属性是只读的,不能通过标记设置.

编辑: 好的,这是我解决这个问题的方式:

<TreeView
          ItemsSource="{Binding Path=Model.Clusters}" 
          ItemTemplate="{StaticResource HoofdCLusterTemplate}"
          SelectedItemChanged="TreeView_OnSelectedItemChanged" />
Run Code Online (Sandbox Code Playgroud)

在我的xaml的codebehindfile中:

private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
    Model.SelectedCluster = (Cluster)e.NewValue;
}
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview selecteditem mvvm

231
推荐指数
9
解决办法
16万
查看次数

是否有任何可公开访问的JSON数据源来测试真实世界的数据?

我正在开发一个JavaScript动态加载的树视图用户控件.我想用真实世界的数据进行测试.

有没有人知道任何提供JSON格式的分层数据访问API的公共服务?

javascript testing treeview json

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

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

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

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

wpf treeview contextmenu

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

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

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

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

c# treeview contextmenu winforms

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

最新的Blink浏览器(如Chrome,Opera)中的奇怪滚动行为

最近我一直在为Angular构建一个树视图组件库,作为ngx-tree.

问题

在我想出如何为这个库实现虚拟滚动功能以获得大数据集的性能并让它在Firefox中正常运行之后不久,我就陷入了Blink -included浏览器中的奇怪滚动行为(如Chromium,Chrome) ,Opera).

演示链接

这是演示插件 - https://embed.plnkr.co/xMpmK5EBC46tDKpYFpw8 请参阅下面的更新#1

情况

  • 在Firefox,Edge和IE 11中,我的带有虚拟滚动功能的库可以实现平滑滚动.
  • 但是,在Chrome和Opera中,当我滚动到树视图内的某些位置时,滚动条的位置(这是scrollTop滚动区域的属性)上下跳动,导致闪烁的树视图并打破虚拟 -滚动功能.

浏览器详细版本

  • Chrome - 59.0.3071.115
  • Firefox - 54.0
  • Edge - 40.15063.0.0

其它浏览器

在中国,有一些带有Chromium项目的外壳浏览器(如360se,QQ浏览器,搜狗浏览器,UC浏览器)和旧版本的V8和blink.而且他们没有那种奇怪的滚动行为.

一些假设

它是由Chromium团队对滚动实现(如平滑滚动)的一些优化引起的吗?

希望得到一些指导!(≧﹏≦)


更新#1

使用事件日志更新演示链接:https://embed.plnkr.co/GpQBZsguhZZOQWWbZnqI/

必须在打开devtool之前测试滚动才能看到日志

我必须更多地解释虚拟滚动的工作原理以及导致闪烁的原因.

首先,请参阅虚拟滚动设计.

虚拟滚动的一个关键点是,我们创建了一个假卷轴区域,其大小与该区域相同,没有虚拟滚动检测.因此,在最佳情况下,滚动区域的滚动条位置不应改变,直到某些预期事件触发其更改.对于滚动事件,我们更新每个动画帧的视图.

在高度固定的滚动区域内,如果我们在动画中正确模拟那些未渲染元素的高度(计算精度可能有一点偏差),我们假设一个事实是scrollTop属性不会以很大的百分比变化.帧.

但是,根据我的观察结果,blink系列浏览器似乎执行不同的策略来更新可滚动元素的scrollTop.更新scrollTop的时机与none-blink-series浏览器不同.到目前为止我所知道的一切.


样品GIF

在这里,我制作了一些GIF来显示Chrome,Firefox和Edge的输出.

Chrome gif

火狐

Firefox gif

边缘

边缘gif

javascript treeview scroll google-chrome angular

57
推荐指数
1
解决办法
1639
查看次数

WPF TreeView:如何设置带有圆角的选定项目,如在资源管理器中

WPF TreeView中的所选项目具有深蓝色背景和"尖锐"角.今天看起来有点过时了:

WPF选择具有或不具有焦点的TreeViewItem

我想改变背景,看起来像在Windows 7的资源管理器中(有/无焦点):

Explorer TreeViewItem已选中 选择没有焦点的Explorer TreeViewItem

我到目前为止所尝试的并没有删除原始的深蓝色背景,而是在它上面画了一个圆形边框,这样你就可以看到边缘和左边的深蓝色 - 丑陋.

在此输入图像描述

有趣的是,当我的版本没有焦点时,它看起来很不错:

在此输入图像描述

我想不要重新定义控件模板,如此处或此处所示.我想设置所需的最小属性,使所选项目在资源管理器中看起来像.

替代方案:我也很乐意将焦点选中的项目看起来像我现在所做的那样没有焦点.失去焦点时,颜色应从蓝色变为灰色.

这是我的代码:

<TreeView 
    x:Name="TreeView"
    ItemsSource="{Binding TopLevelNodes}" 
    VirtualizingStackPanel.IsVirtualizing="True"
    VirtualizingStackPanel.VirtualizationMode="Recycling">

    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />

            <Style.Triggers>
                <Trigger Property="IsSelected" Value="True">
                    <Setter Property="BorderBrush" Value="#FF7DA2CE" />
                    <Setter Property="Background" Value="#FFCCE2FC" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>

    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type viewmodels:ObjectBaseViewModel}" ItemsSource="{Binding Children}">
            <Border Name="ItemBorder" CornerRadius="2" Background="{Binding Background, RelativeSource={RelativeSource AncestorType=TreeViewItem}}"
                      BorderBrush="{Binding BorderBrush, RelativeSource={RelativeSource AncestorType=TreeViewItem}}" BorderThickness="1">
                <StackPanel Orientation="Horizontal" Margin="2">
                    <Image Name="icon" Source="/ExplorerTreeView/Images/folder.png"/>
                    <TextBlock Text="{Binding Name}"/> …
Run Code Online (Sandbox Code Playgroud)

wpf treeview xaml styles selecteditem

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

WPF TreeView HierarchicalDataTemplate - 绑定到具有多个子集合的对象

我试图TreeView绑定我的集合,以便所有组显示嵌套组,每个组将显示条目.

我如何使用HierarchicalDataTemplateTreeView来处理子组和条目集合?

组显示子组和条目:

Example:
Group1
--Entry
--Entry
Group2
--Group4
----Group1
------Entry
------Entry
----Entry
----Entry
--Entry
--Entry
Group3
--Entry
--Entry
Run Code Online (Sandbox Code Playgroud)


对象:


namespace TaskManager.Domain
{
    public class Entry
    {
        public int Key { get; set; }
        public string Name { get; set; }
    }
}

namespace TaskManager.Domain
{
    public class Group
    {
        public int Key { get; set; }
        public string Name { get; set; }

        public IList<Group> SubGroups { get; set; }
        public IList<Entry> Entries …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview xaml hierarchicaldatatemplate

54
推荐指数
3
解决办法
8万
查看次数

C#Winforms粗体树视图节点不显示全文

我正在使用以下代码使我的treenodes加粗:

Font font = new Font(tvQuestionSequence.Font, FontStyle.Bold);

foreach (QuestionnaireBuilder_Category cat in categories)
{
    TreeNode node = new TreeNode();

    node.Text = cat.Description;
    node.Name = cat.Id.ToString();

    node.NodeFont = font;

    tvQuestionSequence.Nodes.Add(node);
}
Run Code Online (Sandbox Code Playgroud)

但粗体节点的文本未正确显示.最后一个字母未显示.怎么会?以及如何解决这个问题?

c# treeview winforms

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

有没有办法扩展Eclipse项目视图和搜索结果中的所有文件夹?

我花了很多时间在树视图中手动扩展深层嵌套文件夹,如Project Explorer和File Search结果树.是否有键盘快捷键或菜单命令来展开所有文件夹?

eclipse directory treeview search expand

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

如何以编程方式选择WPF TreeView中的项目?

如何以编程方式选择WPF中的项目TreeView?该ItemsControl模型似乎阻止了它.

.net c# wpf treeview itemscontrol

49
推荐指数
5
解决办法
6万
查看次数