[英]WPF: TreeView or TreeListView Headers Horizontal Scrolling Issue
我从这里下载了TreeListView。 剪切数据时,它没有显示水平或垂直滚动条。 像这样
所以我改变了它的风格
<Style TargetType="{x:Type l:TreeListView}">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility"
Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility"
Value="Auto" />
<Setter Property="VerticalContentAlignment"
Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type l:TreeListView}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<DockPanel>
<GridViewHeaderRowPresenter Columns="{StaticResource gvcc}"
DockPanel.Dock="Top" />
<ScrollViewer x:Name="_tv_scrollviewer_"
Background="{TemplateBinding Background}"
CanContentScroll="False"
Focusable="True"
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
Padding="{TemplateBinding Padding}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}">
<ItemsPresenter />
</ScrollViewer>
</DockPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="VirtualizingStackPanel.IsVirtualizing"
Value="true">
<Setter Property="CanContentScroll"
TargetName="_tv_scrollviewer_"
Value="true" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
垂直滚动条很好。 但问题是水平Scollbar。 当数据被水平剪切,并且滚动条向右移动时,数据向右移动但是标题保持原样。 像这样。
如何克服这个问题,当treeitem水平滚动时,标题随之移动。 我不允许在scrollviewer中放置标题,因为它们需要在垂直滚动数据时可见。
我相信设置HorizontalScrollBarVisibility="Disabled"
应该强制滚动查看器的内容。 滚动条被禁用后,应该防止它变脏。 这实际上是几个版本的问题。 我不确定它是否已在最新的WPF中修复。
如果你想要完整的树视图(包括标题)水平滚动,另外添加一个这样的滚动查看器:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" >
<Treeview/>
</ScrollViewer>
我对这种树有同样的问题,现在通过sincronizing滚动条解决了。 我向GridViewHeaderRowPresenter添加了一个滚动条,它被水平隐藏并垂直禁用,我使用了codeproject的代码,该代码已经实现了滚动条的sincronization。
<DockPanel>
<ScrollViewer DockPanel.Dock="Top" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility ="Disabled"
controls:ScrollSynchronizer.ScrollGroup="Group1">
<GridViewHeaderRowPresenter Columns="{StaticResource gvcc}"/>
</ScrollViewer>
<ScrollViewer
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
controls:ScrollSynchronizer.ScrollGroup="Group1">
<ItemsPresenter />
</ScrollViewer>
</DockPanel>
链接到图书馆http://www.codeproject.com/Tips/564665/Synchronize-Two-Scroll-Viewers-in-WPF和lib的原始文章http://www.codeproject.com/Articles/39244/滚动同步 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.