wpf - 无法在 ScrollViewer 内滚动 TreeView

标签 wpf treeview scrollviewer

我在 ScrollViewer 中有一个 TreeView。 当我在 TreeView 上转动鼠标滚轮时, TreeView 不会滑动并且保持在同一点。但是当我移动滚动条时,我可以滑动 TreeView 。

我很确定 TreeView 有一个滚动查看器,但我的观点是使用其他滚动查看器,我有一个滚动查看器模板,并且我在我的应用程序中使用了这个模板。这就是为什么我想再次使用这个模板。

这是代码:

<ScrollViewer Template="{DynamicResource AppleStyleScrollBarStyle}">
    <TreeView>
        <TreeViewItem Header="TreeViewItem"/>
        <TreeViewItem Header="TreeViewItem"/>
        <TreeViewItem Header="TreeViewItem"/>
        <TreeViewItem Header="TreeViewItem"/>
      </TreeView>
</ScrollViewer>

最佳答案

这个答案对我有帮助: WPF Remove ScrollViewer from TreeView

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);
        }
    }

关于wpf - 无法在 ScrollViewer 内滚动 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28170950/

相关文章:

wpf - 如何在单击项目时展开 WPF TreeView

delphi - 在边缘上方/附近拖动时滚动 TTreeView

c# - WPF:无法在 DataGrids 中滚动

wpf - ScrollViewer 中的 Canvas (预览)MouseButtonDown 事件顺序

c# - Caliburn Micro IoC/DI 工厂方法

c# - 如何验证 WindowsIdentity 实例?

WPF DataGrid ItemsSource 在更改源时不会更新

wpf - 在托管的 Winforms 控件中出现异常后继续在 WPF 应用程序中执行

javascript - Jquery treeview-如何通过单击按钮来展开/折叠给定的单个节点

wpf - ItemsControl,VirtualizingStackPanel和ScrollViewer的高度