5

我从这里下载了 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水平滚动时,标题随之移动的问题。我不允许将标题放在滚动查看器中,因为它们需要在垂直滚动数据时可见。

4

3 回答 3

1

如果您希望完整的树视图(包括标题)水平滚动,请另外添加一个这样的滚动查看器:

<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" >
    <Treeview/>
</ScrollViewer>
于 2013-06-03T14:10:48.440 回答
0

我相信设置HorizontalScrollBarVisibility="Disabled"应该强制滚动查看器的内容在里面。禁用滚动条后,它应该不会弄乱渲染。这实际上是几个版本的问题。我不确定它是否已在最新的 WPF 中修复。

于 2013-04-23T17:04:32.210 回答
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 和库的原始文章http://www.codeproject.com/Articles/39244/滚动同步

于 2014-03-18T06:56:29.637 回答