我如何使Windows 8 ListView內的ListItems水平流動。默認行爲是垂直的,但我想在水平流中顯示列表,以便它可以呈現爲全景圖。Windows 8的ListView與水平項目流
我嘗試了支持水平佈局的GridView,但是項目高度有一個限制,它沒有顯示大文本項目的完整項目內容。
我如何使Windows 8 ListView內的ListItems水平流動。默認行爲是垂直的,但我想在水平流中顯示列表,以便它可以呈現爲全景圖。Windows 8的ListView與水平項目流
我嘗試了支持水平佈局的GridView,但是項目高度有一個限制,它沒有顯示大文本項目的完整項目內容。
您可以使用一個ListView這樣:
<ListView
Height="500"
VerticalAlignment="Center"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.VerticalScrollMode="Disabled"
ScrollViewer.ZoomMode="Disabled"
SelectionMode="None">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel
Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
- 這給它一個水平面板和水平滾動條右側滾動條。
ListView和GridView都會在您獲取較大的項目時導致問題。我認爲默認情況下,這些項目可能會根據添加的第一個項目的大小來確定大小。您可以手動設置該尺寸:
<ListView.ItemContainerStyle>
<Style
TargetType="ListViewItem"><!-- note - for GridView you should specify GridViewItem, for ListBox - ListBoxItem, etc. -->
<Setter
Property="Height"
Value="200" /> <!-- this is where you can specify the size of your ListView items -->
<Setter
Property="Width"
Value="350" />
</Style>
</ListView.ItemContainerStyle>
- 請注意,所有項目的尺寸必須相同。
- 也注意到 - 我已經改變了這個答案,以取代與ItemsStackPanel
這是虛擬化的一個StackPanel
,所以它應該讓你的大數據集更好的性能和更低的內存使用率,但請 - 不創建具有大型水平滾動列表的佈局。在一些非常有限的情況下,它們可能是一個很好的解決方案,但在大多數情況下,它們會打破許多良好的UI模式,並使您的應用程序難以使用。
這種方法似乎也解決了觸摸鍵盤出現在GridView的編輯控件上的問題!我無法滿足這個答案! –
請注意,使用'StackPanel'作爲'ItemsPanel'禁用了虛擬化,因此您不應該將它與未受控制的大小列表一起使用。我會嘗試使用'ItemsStackPanel'來代替這種情況。我沒有更新答案,雖然我沒有測試過。很確定它應該工作。在8.1中有 –
有一種叫做「VirtualizingStackPanel」的東西 – Quincy
您也可以使用樣式封裝Filips方法:
<Style TargetType="ListView" x:Key="VerticalListView">
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Disabled" />
<Setter Property="ScrollViewer.HorizontalScrollMode" Value="Enabled" />
<Setter Property="ScrollViewer.VerticalScrollMode" Value="Disabled" />
<Setter Property="ScrollViewer.ZoomMode" Value="Disabled" />
<Setter Property="SelectionMode" Value="None" />
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel VerticalAlignment="Top" Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemContainerStyle">
<Setter.Value>
<Style TargetType="ListViewItem">
<Setter Property="Height" Value="400" />
</Style>
</Setter.Value>
</Setter>
</Style>
它應用到你的列表視圖需要:
<ListView Style="{StaticResource VerticalListView}" />
我寧願風格的做法,但你必須仔細修改面板方向。在第一個視覺佈局通過之前,物品控制面板將不會被創建,因此將無法修改。如果它不同於Xaml的一行,你必須找到一個處理設置初始方向的策略。也可以通過樣式設置器分配ItemsPanelTemplate。
即使它是關於WPF的答案,這對我在我的WinRT應用程序中工作:http://stackoverflow.com/questions/359217/how-do-i-make-wpf-listview-items-repeat-horizontally- like-a-horizontal-scrollba – KallDrexx