Один из способов - использовать встроенные свойства селектора GridView.
Смотрите мой блог запись .
В двух словах, вы можете создать собственный StyleSelector. Все, что вам нужно сделать, это переопределить метод StyleSelectorCore () и вставить в свою логику, чтобы выбрать стиль, который определяет интервалы столбцов или строк.
Вам потребуется получить шаблон стиля GridViewItem по умолчанию через Blend или онлайн-ресурс и создать явный стиль по умолчанию. Затем создайте новые стили на основе явного, например:
<Style x:Key="DoubleHeightGridViewItemStyle"
BasedOn="{StaticResource DefaultGridViewItemStyle}"
TargetType="GridViewItem">
<Setter Property="VariableSizedWrapGrid.RowSpan"
Value="2" />
</Style>
Чтобы это работало, вам также нужно изменить шаблон ItemsPanel в GridView, чтобы использовать VariableSizedWrapGrid.
Наконец, создав пользовательский DataTemplateSelector, вы сможете изменить DataTemlates ваших связанных элементов. Вам нужно будет сделать это, если только ваши элементы большого размера не смогут использовать тот же шаблон данных, что и шаблон по умолчанию.