繁体   English   中英

WPF:TreeView或TreeListView标题水平滚动问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM