【问题标题】:ListView Inside a Grid inside a ScrollViewerScrollViewer 内的网格内的 ListView
【发布时间】:2014-02-24 17:13:36
【问题描述】:

我在一个网格内有一个ListView,而网格又在一个“整体ScrollViewer”内。 用户应该能够水平滚动整个页面,然后垂直向下滚动几个类似元素的子列表。虽然我可以水平滚动,但将外部 ScrollViewer 放在页面内容周围会破坏我的 ListViews

这是我的 XAML 设置的精简版:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.RowDefinitions>
        <RowDefinition Height="140" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <TextBlock x:Uid="Title" Text="Title"/>

    <ScrollViewer Grid.Row="1" ZoomMode="Disabled"
                  VerticalScrollBarVisibility="Hidden" 
                  HorizontalScrollBarVisibility="Auto" 
                  VerticalScrollMode="Disabled"
                  HorizontalScrollMode="Enabled">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="380" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <!--My List-->
            <ListView x:Name="MyList" Grid.Column="0" />


            <Grid x:Name="AppointmentDetailView" Grid.Column="1">
                <!--Some other stuff-->
            </Grid>
        </Grid>
    </ScrollViewer>
</Grid>

如果我在 ListView 的任何父级或 ListView 本身上设置了固定高度,则滚动会按预期工作,但对于不同尺寸的屏幕来说,固定高度是不可取的。我尝试绑定到 ListViews 父母的 ActualHeight 但没有运气。

即使ScrollViewer.VerticalScrollMode 被禁用,似乎ScrollViewers 子级也不受可用高度的限制。对我来说似乎很奇怪,我原以为ScrollViewer 的布局逻辑在它被禁用的方向上与Grid 相似。

感谢您的帮助,谢谢!

【问题讨论】:

    标签: c# xaml windows-runtime scroll


    【解决方案1】:

    我找到了一种解决方法,将我的ScrollViewer 包装在Grid 中,并绑定到ScrollViewer 的子元素上的外部Grids ActualHeightProperty。它有点像黑客,但做了我需要的事情,就像这样

    <Grid x:Name="ScrollViewerContainer" ...>
        <ScrollViewer VerticalScrollMode="Disabled" ...>
             <!--Page Content-->
             <Grid Height="{Binding ActualHeight, ElementName=ScrollViewerContainer}" ...>
                  ....
    

    我个人觉得ScrollViewer 不应该允许它的孩子确定它的Width/Height,当滚动模式在特定方向上被禁用时,它会破坏嵌套的ScrollViewer's。它应该恢复到可用空间。但是,嘿,我不是微软..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多