Несколько другое вопросы в SO пришли к тому же выводу, что и я, - используя ItemsControl
с DataTemplate
для каждый элемент, созданный для размещения элементов таким образом, чтобы они напоминали сетку, намного проще (особенно для форматирования), чем использование ListView
.
Код выглядит примерно так:
<StackPanel Grid.IsSharedSizeScope="True">
<!-- Header -->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Column Header 1" />
<TextBlock Grid.Column="1" Text="Column Header 2" />
</Grid>
<!-- Items -->
<ItemsControl ItemsSource="{Binding Path=Values, Mode=OneWay}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Column1" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Column2" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding ColumnProperty1}" />
<TextBlock Grid.Column="1" Text="{Binding ColumnProperty2}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Проблема, которую я вижу, заключается в том, что всякий раз, когда я меняю местами объект, к которому привязан ItemsSource
(это ObservableCollection
, на который я заменяю ссылку, а не очищаю и добавляю заново), вся `` сетка '' танцует в течение нескольких секунд. .
Предположительно, он выполняет несколько проходов макета, чтобы все столбцы Auto
-width совпадали.
Это очень отвлекает моих пользователей, и я хотел бы разобраться с этим. Кто-нибудь еще видел это?
Grid
правильно работать сItemsControl
, поэтому спасибо :) - person GONeale   schedule 05.07.2012MinWidth
, и все решилось само. - person Ryan Amies   schedule 02.09.2014