WPF - 具有固定标题/行的ScrollViewer

时间:2021-12-04 14:08:20

What is the easiest way to create ScrollViewer with fixed header (control that always stays at the top ignoring the scroll), but which still scrolls horizontally.

使用固定标题创建ScrollViewer的最简单方法是什么(控件始终位于顶部,忽略滚动),但仍然水平滚动。

Should I write my own ScrollViewer template with header above ScrollContentPresenter, and move it when horizontal scroll value changes, or maybe it's better to put header inside ScrollViewer and move it vertically? Or maybe there is a lot better way to achieve this...

我应该使用ScrollContentPresenter上方的标题编写自己的ScrollViewer模板,并在水平滚动值更改时移动它,或者最好将标题放在ScrollViewer中并垂直移动它?或者可能有更好的方法来实现这一目标......

2 个解决方案

#1


1  

I think you can achieve the effect you want by nesting scrollviewers.

我认为你可以通过嵌套滚动查看器来达到你想要的效果。

        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="50" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Border Background="Gray">
                <TextBlock Text="HEader" /> 
            </Border>

            <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">

            </ScrollViewer>
        </Grid>
    </ScrollViewer>

#2


-2  

you can disable the vertical scrollbar in this way:

您可以通过以下方式禁用垂直滚动条:

ScrollViewer.VerticalScrollBarVisibility="Disabled"

#1


1  

I think you can achieve the effect you want by nesting scrollviewers.

我认为你可以通过嵌套滚动查看器来达到你想要的效果。

        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="50" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <Border Background="Gray">
                <TextBlock Text="HEader" /> 
            </Border>

            <ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">

            </ScrollViewer>
        </Grid>
    </ScrollViewer>

#2


-2  

you can disable the vertical scrollbar in this way:

您可以通过以下方式禁用垂直滚动条:

ScrollViewer.VerticalScrollBarVisibility="Disabled"