关于SO的其他 几个问题 也得出了与我相同的结论——对构建的每个项目使用 a来定位项目,使其类似于网格比使用 a 简单得多(尤其是格式化)。 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 列匹配。
这对我的用户来说非常分散注意力,我想解决它。有没有其他人看过这个?