如何检索在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) 我正在开发一个JavaScript动态加载的树视图用户控件.我想用真实世界的数据进行测试.
有没有人知道任何提供JSON格式的分层数据访问API的公共服务?
我想在显示ContextMenu之前右键单击选择一个WPF TreeView节点.
对于WinForms,我可以使用这样的代码在上下文菜单下点击查找节点,WPF的替代方案是什么?
如何找出树列表中的哪个节点已激活上下文菜单?例如,右键单击节点并从菜单中选择一个选项.
我无法使用TreeViews的SelectedNode属性,因为该节点只是右键单击而未选中.
最近我一直在为Angular构建一个树视图组件库,作为ngx-tree.
在我想出如何为这个库实现虚拟滚动功能以获得大数据集的性能并让它在Firefox中正常运行之后不久,我就陷入了Blink -included浏览器中的奇怪滚动行为(如Chromium,Chrome) ,Opera).
这是演示插件 -
https://embed.plnkr.co/xMpmK5EBC46tDKpYFpw8请参阅下面的更新#1
scrollTop滚动区域的属性)上下跳动,导致闪烁的树视图并打破虚拟 -滚动功能.在中国,有一些带有Chromium项目的外壳浏览器(如360se,QQ浏览器,搜狗浏览器,UC浏览器)和旧版本的V8和blink.而且他们没有那种奇怪的滚动行为.
它是由Chromium团队对滚动实现(如平滑滚动)的一些优化引起的吗?
希望得到一些指导!(≧﹏≦)
更新#1
使用事件日志更新演示链接:https://embed.plnkr.co/GpQBZsguhZZOQWWbZnqI/
必须在打开devtool之前测试滚动才能看到日志
我必须更多地解释虚拟滚动的工作原理以及导致闪烁的原因.
虚拟滚动的一个关键点是,我们创建了一个假卷轴区域,其大小与该区域相同,没有虚拟滚动检测.因此,在最佳情况下,滚动区域的滚动条位置不应改变,直到某些预期事件触发其更改.对于滚动事件,我们更新每个动画帧的视图.
在高度固定的滚动区域内,如果我们在动画中正确模拟那些未渲染元素的高度(计算精度可能有一点偏差),我们假设一个事实是scrollTop属性不会以很大的百分比变化.帧.
但是,根据我的观察结果,blink系列浏览器似乎执行不同的策略来更新可滚动元素的scrollTop.更新scrollTop的时机与none-blink-series浏览器不同.到目前为止我所知道的一切.
在这里,我制作了一些GIF来显示Chrome,Firefox和Edge的输出.
WPF TreeView中的所选项目具有深蓝色背景和"尖锐"角.今天看起来有点过时了:

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

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

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

我想不要重新定义控件模板,如此处或此处所示.我想设置所需的最小属性,使所选项目在资源管理器中看起来像.
替代方案:我也很乐意将焦点选中的项目看起来像我现在所做的那样没有焦点.失去焦点时,颜色应从蓝色变为灰色.
这是我的代码:
<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) 我试图TreeView绑定我的集合,以便所有组显示嵌套组,每个组将显示条目.
我如何使用HierarchicalDataTemplate它TreeView来处理子组和条目集合?
组显示子组和条目:
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) 我正在使用以下代码使我的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)
但粗体节点的文本未正确显示.最后一个字母未显示.怎么会?以及如何解决这个问题?
我花了很多时间在树视图中手动扩展深层嵌套文件夹,如Project Explorer和File Search结果树.是否有键盘快捷键或菜单命令来展开所有文件夹?
如何以编程方式选择WPF中的项目TreeView?该ItemsControl模型似乎阻止了它.
treeview ×10
c# ×5
wpf ×5
contextmenu ×2
javascript ×2
selecteditem ×2
winforms ×2
xaml ×2
.net ×1
angular ×1
directory ×1
eclipse ×1
expand ×1
itemscontrol ×1
json ×1
mvvm ×1
scroll ×1
search ×1
styles ×1
testing ×1