C# 具有虚拟化StackPanel的列表框中的额外空间
我正在使用一个将ItemsPanel设置为VirtualzingStackPanel的列表框C# 具有虚拟化StackPanel的列表框中的额外空间,c#,wpf,xaml,virtualizingstackpanel,C#,Wpf,Xaml,Virtualizingstackpanel,我正在使用一个将ItemsPanel设置为VirtualzingStackPanel的列表框 <ListBox ItemsSource="{Binding Items}" ScrollViewer.VerticalScrollBarVisibility="Visible"> <ItemsControl.ItemsPanel> <ItemsPanelTemplat
<ListBox ItemsSource="{Binding Items}"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"
VirtualizationMode="Recycling"
HorizontalAlignment="Stretch"
VerticalAlignment="Top"
/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataGrid
VerticalAlignment="Top"
HeadersVisibility="None"
ItemsSource="{Binding Distances}">
<DataGrid.Columns>
<DataGridTemplateColumn IsReadOnly="True" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding FactDistance}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding NormDistanceValue}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
TextAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding NormLiterature}"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
TextAlignment="Center"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
看起来还可以:
但当我通过笨拙地拖动拇指进行水平滚动时,奇怪的额外空间出现了
当我调整窗口大小时,额外的空间神奇地消失了。它来自哪里?如何摆脱它
如果我使用simple StackPanel,一切都很好,但我需要使用虚拟化。ListBox已经在使用虚拟化StackPanel。你不必担心。也不需要VirtualizationMode=“Recycling”只需以通常的方式使用ListBox,而无需将所有覆盖项默认垂直放置。我需要它们水平排列,所以我覆盖了ItemsPanel。一旦你用你的自定义虚拟化StackPanel替换ItemsPanel,你就会得到那些空白。因为这东西已经不能正常测量了。这就是为什么您必须调整窗口大小,从而强制重新测量所有元素和空白。请删除回收模式并试用。回收也可能导致这种奇怪的行为。只是可能。更改为VirtualizationMode=“Standard”,问题仍然存在。。。