cKN*_*Net 6 wpf treeview scrollviewer
我在ScrollViewer中有一个TreeView。当我在treeview上转动鼠标滚轮时,treeview不会滑动并且停留在同一点。但是,当我移动滚动条时,可以滑动树形视图。
我很确定treeview有一个scrollviewer,但是我的意思是要使用另一个scrollviewer,我有一个scrollviwer模板,并且在整个应用程序中都使用了这个模板。这就是为什么我要再次使用此模板。
这是代码:
<ScrollViewer Template="{DynamicResource AppleStyleScrollBarStyle}">
<TreeView>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
</TreeView>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
这个答案对我有帮助: WPF从TreeView中删除ScrollViewer
https://serialseb.com/blog/2007/09/03/wpf-tips-6-preventing-scrollviewer-from/
只需订阅您的treeView的PreviewMouseWheel事件:
// https://serialseb.com/blog/2007/09/03/wpf-tips-6-preventing-scrollviewer-from/
private void treeView_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
if (sender is TreeView && !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);
}
}
Run Code Online (Sandbox Code Playgroud)
TreeView默认模板已包含ScrollViewer. 当你将它包裹在另一个中时ScrollViewer,里面的那个TreeView什么都不做,但仍然处理一些鼠标事件,例如鼠标滚轮。相反,您可以创建隐式Stylefor ScrollViewerinTreeView.Resources
<TreeView>
<TreeView.Resources>
<Style TargetType="{x:Type ScrollViewer}">
<Setter Property="Template" Value="{DynamicResource AppleStyleScrollBarStyle}"/>
</Style>
</TreeView.Resources>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
<TreeViewItem Header="TreeViewItem"/>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |