我从here下载了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中放置标题,因为在垂直滚动数据时它们需要可见。
答案 0 :(得分:0)
我相信设置HorizontalScrollBarVisibility="Disabled"
应该强制滚动查看器的内容。滚动条被禁用后,应该防止它变脏。这实际上是几个版本的问题。我不确定它是否已在最新的WPF中修复。
答案 1 :(得分:0)
如果您希望完整的树视图(包括标题)水平滚动,请另外添加如下的滚动查看器:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" >
<Treeview/>
</ScrollViewer>
答案 2 :(得分:0)
我对这种树有同样的问题,现在通过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/Scroll-Synchronization的原始文章。