所以我试图创建一个可以有水平或垂直滚动条的窗口,捕获是网格的顶行应该被冻结并放置并且不能垂直滚动(很像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=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" />
<Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" />
<Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" />
<Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" /><Run Text=" test2" />
</TextBlock>
</ScrollViewer>
</Grid>
</ScrollViewer>
所以这几乎可以正常工作,屏幕可以水平滚动并滚动两个窗格,垂直滚动只滚动底部窗格(这就是我想要的)。但是,垂直滚动条不会出现在窗口的侧面,而是必须向右滚动才能使用它。有没有办法让滚动条捕捉到窗口并垂直滚动而不会导致它也滚动顶部窗格?
答案 0 :(得分:1)
第一个ScrollViewer正在告诉网格:“你有足够多的空间,可以根据需要随意增长”。因此,内部ScrollViewer永远不会被触发,因为它在空间上没有限制。
尝试删除第一个ScrollViewer。
----编辑-------
那么,两个“面板”的宽度是否相同?好吧..将每个面板包装在自己的ScrollViewer中。顶部面板的水平ScroolViewer应该是“隐藏的”,而不是垂直的。底部应该有可见或“自动”。当底部更改时,请同步顶部的ScrollViewer(在代码中)(选中http://perezgb.com/2009/07/08/how-to-keep-two-scrollviewers-in-sync-in-wpf)