我试图在 ScrollViewer 中嵌套一个用户控件,使其高度与 ScrollViewer 的高度相同,这可能会因屏幕大小而异(即不固定)。
ScrollViewer 负责水平滚动并禁用垂直滚动。嵌套用户控件有一个包含两行的网格 - “标题”(另一个用户控件)和一个 ListView。这个 ListView 应该是可垂直滚动的。这里的目标是“标题”保持原位,ListView 的大内容可以垂直滚动。否则,如果包含的 ScrollViewer 负责垂直滚动,则“标题”将在 ScrollViewer 的垂直滚动时超出可见区域。
我的问题是:如何使嵌套用户控件的高度与 ScrollViewer 的高度相同(不固定)?如果未指定/限制嵌套用户控件的高度(在下面的代码段中等于 540),则 ListView 会占用它需要的所有空间,因此它不能垂直滚动。换句话说,我认为我需要从中删除硬编码的高度“540”,并以某种方式使其高度与其父级(ScrollViewer)相同。可能有更好的解决方案,但限制用户控件的高度似乎是实现目标的一种方法。
这是带有 ScrollViewer 的页面的相关 XAML:
<Grid x:Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="140"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row ="1">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollMode="Disabled" VerticalScrollBarVisibility="Hidden">
<userCtrl:MyUserControl Height="540"/>
</ScrollViewer>
</Grid>
这是用户控件的 XAML 片段
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<local:HeaderRow x:Name="headerRow"></local:HeaderRow>
<ListView x:Name="gridBodyListView" Grid.Row="1 "/>
</Grid>