3
我正在構建一個通用應用程序,我的Win8.1應用程序必須顯示一個網格物品。通常情況下,網格由3列組成,但在較小的屏幕上,我希望項目能夠包裹,因此只有2列(甚至1)。這是我的代碼:Windows 8.1如何自動包裝網格物品?
<GridView ItemsSource="{Binding Regions}" IsItemClickEnabled="True">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="3" MinWidth="400" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="10">
<Image Source="{Binding Code, Converter={StaticResource FlagIconConverter}, ConverterParameter='/Assets/Icons/Flags/{0}.png'}" Width="30" />
<TextBlock Text="{Binding NativeName}" Style="{StaticResource BodyTextBlockStyle}" Margin="10,0,0,10" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
每當我使應用程序變小,項目不會自動換行。我試圖通過更改MaximumRowsOrColumns
財產VisualStateManager
解決此問題,但由於某些原因無法訪問我的WrapGrid
不起作用。從代碼隱藏更改屬性也不起作用,因爲它再次無法訪問WrapGrid。
我試了這個既WrapGrid
和ItemsWrapGrid
(有什麼區別?)和ListView
和GridView
。那裏沒有區別。
有誰知道如何做到這一點?
這就是奇數。樹看起來像這樣:''''''''Grid' - >'GridView'。它所在的網格列的寬度爲Auto。沒有固定的寬度。儘管如此,當我將窗口變小時,它看起來像這樣:http://i.imgur.com/huNUA6Q.png。 – 2014-09-21 11:22:20
嗯,發現問題。這是因爲我把wrapgrid內1列在那裏我有3列(等等wrapgrid的每一側一個額外的列。之後我設置的columnspan 3,它開始包裝像它應該的。如果你可以更新你的答案,包括這一點,我會接受它:) – 2014-09-21 11:25:11
甜:)'Auto'大小將作爲固定大小相同的效果。網格只會計算一次大小......除非綁定的集合發生變化。所以調整應用程序不會影響它。將你的'Auto'改爲'*',你可以調整你的App的大小,它會改變網格的換行。 :),我會更新解決方案以避免Auto。 – 2014-09-21 11:48:23