WPF中treeview模版问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中treeview模版问题相关的知识,希望对你有一定的参考价值。
现在有一个需求:
需要在树中的每一项前面加一个checkbox,可以勾选
父亲节点勾选了以后所有的子节点都选中,撤销同理
子节点全部选中以后父节点选中,所有子节点都不选中同理。
有没有谁能给我个代码或者思路,感谢!
2、将这个控件作为TreeViewItem的Header的模板。 参考技术B 直接写有点麻烦,你先看下面的链接是否有帮助?
http://blog.csdn.net/szstephenzhou/article/details/8739510
http://social.msdn.microsoft.com/Forums/vstudio/en-US/9fd804d5-050c-4b94-b877-a23d81782fce/automatically-check-treeview-child-nodes-when-parent-is-checked本回答被提问者和网友采纳 参考技术C 重写模板,trigger 时间里面做
WPF 从 TreeView 中删除 ScrollViewer
【中文标题】WPF 从 TreeView 中删除 ScrollViewer【英文标题】:WPF Remove ScrollViewer from TreeView 【发布时间】:2011-03-30 17:55:06 【问题描述】:我想知道是否可以轻松关闭 TreeView 的 ScrollViewer。
我有一个带有网格的用户控件。其中一个 Cell 在 Stackpanel 中有几个 TreeView。控件的高度会根据 TreeView 的高度自动调整,因此不需要滚动条。
问题是:我在带有自己的 ScrollViewer 的 ListBox 中有一堆这些,但是当我使用 MouseWheel 时,当您在 TreeView 上方时滚动停止。
这是因为 TreeView 有自己的 ScrollViewer,它窃取了 MouseWheel。我知道这可能通过覆盖控件模板来实现,但我希望有更简单的方法。
【问题讨论】:
【参考方案1】:您可以使用此处描述的技术:http://serialseb.blogspot.com/2007/09/wpf-tips-6-preventing-scrollviewer-from.html 来防止 ScrollViewer 处理鼠标滚轮事件。将PreviewMouseWheel="HandlePreviewMouseWheel"
添加到您的 TreeView 并将 HandlePreviewMouseWheel 定义为:
private void HandlePreviewMouseWheel(object sender, MouseWheelEventArgs e)
if (!e.Handled)
e.Handled = true;
var eventArg = new MouseWheelEventArgs(
e.MouseDevice, e.Timestamp, e.Delta);
eventArg.RoutedEvent = UIElement.MouseWheelEvent;
eventArg.Source = sender;
var parent = ((Control)sender).Parent as UIElement;
parent.RaiseEvent(eventArg);
不过,将控件模板更改为不包含 ScrollViewer 并不难,因为 TreeView 的默认模板非常简单,而且大部分复杂性在于处理 ScrollViewer。尝试这样做:
<TreeView.Template>
<ControlTemplate TargetType="TreeView">
<Border BorderBrush="TemplateBinding BorderBrush"
BorderThickness="TemplateBinding BorderThickness"
SnapsToDevicePixels="true">
<ItemsPresenter/>
</Border>
</ControlTemplate>
</TreeView.Template>
【讨论】:
嗯,看来我的最后一条评论不起作用。无论如何,谢谢!我都试过了。 xaml 控件模板运行良好,但 PreviewMouseWheel 在滚动时仍然“卡住”了几次。我将使用 xaml 解决方案。 +1 用于 XAML 解决方案(同样适用于同样的问题) 完美。我将这个处理程序与EventManager.RegisterClassHandler
一起使用,以摆脱订阅所有相同类型的控件来解决问题的需要。以上是关于WPF中treeview模版问题的主要内容,如果未能解决你的问题,请参考以下文章