Результат, который я хочу достичь, довольно прост, список из 2 столбцов, имеющих равную ширину. В Windows Phone 7/8 это может быть легко достигнуто с помощью ListBox
с WrapPanel
как ItemsPanel
и установки ItemWidth
в 240 (поскольку ширина экрана равна 480).
Теперь я пишу универсальное приложение, но здесь проблема заключается в том, что на экране не гарантируется ширина 480 (даже не для телефона), поэтому я не могу установить ItemWidth
как я хотите, чтобы он заполнил ширину экрана. Я смог добиться почти желаемого эффекта, используя следующий XAML
:
<GridView ItemsSource="{Binding Results}" Margin="12">
<GridView.ItemTemplate>
<DataTemplate>
<Grid>
<Image Source="{Binding SampleImage}" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal" HorizontalChildrenAlignment="Stretch" VerticalChildrenAlignment="Stretch">
</WrapGrid>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
Что дает следующий результат:
Как видно, он успешно дает 2 столбца с равной шириной, НО Grid
в GridView.ItemTemlate
не заполняет всю ширину каждого столбца. Я попытался установить HorizontalAlignment="Stretch"
как на Grid
, так и на GridView
без каких-либо успехов. Кто-нибудь имеет представление об этом?