我在一个网格中有两个树视图。这个网格位于一个ScrollView中。(这样做的原因是,ob视图的两个树节点总是处于相同的相对深度)。
我现在的问题是,当我的鼠标悬停在树上,然后使用鼠标轮时,滚动视图不会滚动。当我悬停在另一个内部视图(ConnectionView)上时,它工作得很好。
我的观点:
<!-- Window -->
<ScrollViewer VerticalScrollBarVisibility="Visible">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TreeView Grid.Column="0" ItemsSource="{Binding Path=TreeNodesLeft}" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}" >
<local:TreeNodeView />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<!--styles -->
</TreeView>
<Grid Grid.Column="1" >
<local:ConnectionView DataContext="{Binding Path=Connections}" />
</Grid>
<TreeView Grid.Column="2" ItemsSource="{Binding Path=TreeNodesRight}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildNodes}" >
<local:TreeNodeView />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<!--styles -->
</TreeView>
</Grid>
</ScrollViewer>
<!-- Window -->发布于 2019-01-22 20:24:16
如果我理解正确,问题是当鼠标位于Treeview控件(TreeNodesLeft/TreeNodesLeft/TreeNodesLeft)上时,滚动不工作?如果是这样的话,那是因为treeview有它自己的内部滚动查看器,所以当鼠标在它上面时,那个滚动视图是工作的。您必须编辑treeview的模板才能删除滚动查看器。
在树视图中添加以下内容
<TreeView.Template>
<ControlTemplate>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="
{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
<ItemsPresenter/>
</Border>
</ControlTemplate>
</TreeView.Template>或者将其作为静态资源添加并重用它。
<ControlTemplate x:Key="NoScrollViewerTemplate">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="true">
<ItemsPresenter/>
</Border>
</ControlTemplate>
<TreeView Template="{StaticResource NoScrollViewerTemplate}" />发布于 2019-01-22 16:15:43
您可以遵循以下两种选择之一:
ScrollToVerticalOffset方法同步滚动位置,如:Synchronized scrolling of two ScrollViewers whenever any one is scrolled in wpf,您可以通过GetChildOfType:How to get children of a WPF container by type?从TreeView获得ScrollViewer。ScrollViewers为TreeViews禁用ScrollViewer.VerticalScrollBarVisibility="Disabled",并在此处添加WheelScrolling:ScrollViewer mouse wheel not working。可能TreeView ScrollViewers仍在处理滚动事件。https://stackoverflow.com/questions/54311985
复制相似问题