簡體   English   中英

ScrollViewer內的網格內的ListView

[英]ListView Inside a Grid inside a ScrollViewer

我在一個Grid內有一個ListView ,而該Grid又在一個“整體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本身上設置了固定的高度,則滾動將按預期方式進行,但對於大小不同的屏幕,固定高度是不可取的。 我試圖綁定到ListView的父母的ActualHeight,但沒有運氣。

這似乎是ScrollViewers孩子就不會被限制,即使可用高度ScrollViewer.VerticalScrollMode被禁用。 對我來說似乎很奇怪,我希望ScrollViewer的布局邏輯在禁用方向上類似於Grid

感謝您的任何幫助,謝謝!

我找到了一種解決方法,其中涉及將ScrollViewer包裝在Grid並綁定到ScrollViewer的子元素上的外部Grids ActualHeightProperty 它有點hack,但是做了我需要做的事情,像這樣

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

我個人認為,當在特定方向禁用滾動模式時, ScrollViewerScrollViewer確定其Width/Height ,因為它會破壞嵌套的ScrollViewer 它應該恢復為可用空間。 但是,我不是Microsoft。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM