所以,我有2列的网格。每列包含一个扩展器,每个扩展器都包含一个使用虚拟化堆栈面板的项目控件。
每个项目都相同,但是文本等的长度作为变量。我有一个问题,项目控件中的某个项目超出了视野,希望比其上方的项目更宽。在我向下滚动之前,所有元素的宽度似乎都与该较宽元素的预期宽度相同,但是直到我将有问题的项目几乎滚动到视图中时,堆栈面板/扩展器才能正确地适应。
我有一张图片可以显示出来。左侧的列均已正确呈现,但没有任何项目想要比顶部的项目更宽。 左侧的列中有要向下扩展的项目,希望扩大,因此这些项目的“边框”会扩展,但是直到我滚动时,扩展器才能适应。
我尝试使用共享大小组,但无济于事(强制将较宽项目上的文本包装起来不是问题)
以下是XAML结构的大致含义(各列几乎相同)
<Grid Grid.Row="2" HorizontalAlignment="Right">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Expander ExpandDirection="Left" Grid.Column="0" Margin="0,-2">
<Expander.Header>
<TextBlock Text="DONE">
<TextBlock.LayoutTransform>
<RotateTransform Angle="90"/>
</TextBlock.LayoutTransform>
</TextBlock>
</Expander.Header>
<Border BorderThickness="4,4,4,4" BorderBrush="Gray" CornerRadius="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Text="DONE" Margin="5" HorizontalAlignment="Center" Grid.Row="0" FontWeight="Bold" FontSize="18" />
<Border Width="Auto" Background="#ABABAB" Margin="15,0" Height="2" CornerRadius="5" Grid.Row="1">
<Border.Effect>
<DropShadowEffect/>
</Border.Effect>
</Border>
<ItemsControl ItemsSource="{Binding DoneCollection}" Margin="5" Style="{StaticResource VirtualizingIC}" Grid.Row="2" VirtualizingStackPanel.IsVirtualizing="True" ScrollViewer.CanContentScroll="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
.....
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Border>
</Expander>
</Grid>