0

所以我正在尝试制作一个可以有水平或垂直滚动​​条的窗口,关键是网格的第一行应该被冻结并放置并且不能垂直滚动(很像 excel 中的冻结窗格)。水平滚动条应滚动两个窗格。我大部分时间都在工作,这是演示的代码子集。

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

        <TextBlock Text="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" />
        <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" >
            <TextBlock Text="test2">
                <Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" />
                <Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" />
                <Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" />
                <Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" /><Run Text="&#10;test2" />
            </TextBlock>
        </ScrollViewer>
    </Grid>
</ScrollViewer>

所以这几乎可以正常工作,屏幕可以水平滚动并滚动两个窗格,而垂直滚动只会滚动底部窗格(这是我想要的)。但是垂直滚动条不会出现在窗口的一侧,而是您必须一直滚动到右侧才能使用它。有什么方法可以使滚动条捕捉到窗口并垂直滚动而不使其也滚动顶部窗格?

4

1 回答 1

1

第一个 ScrollViewer 告诉 Grid:“您有任意多的空间,可以根据需要随意增长”。因此,内部 ScrollViewer 永远不会被触发,因为它没有空间限制。

尝试删除第一个 ScrollViewer。

- - 编辑 - - - -

那么,两个“面板”将具有相同的宽度?好吧.. 将每个面板包装在自己的 ScrollViewer 中。顶部面板应该有它的水平 ScroolViewer “隐藏”,没有垂直的。底部应该有可见或“自动”。底部更改时同步顶部 ScrollViewer(在代码中)(检查http://perezgb.com/2009/07/08/how-to-keep-two-scrollviewers-in-sync-in-wpf

于 2012-08-29T18:42:57.060 回答