[英]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}" ...>
....
我個人認為,當在特定方向禁用滾動模式時, ScrollViewer
不ScrollViewer
確定其Width/Height
,因為它會破壞嵌套的ScrollViewer
。 它應該恢復為可用空間。 但是,我不是Microsoft。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.