在网格列内部具有Items Control的虚拟化面板无法正确计算宽度

时间:2018-10-26 04:20:26

标签: wpf xaml virtualizingstackpanel

所以,我有2列的网格。每列包含一个扩展器,每个扩展器都包含一个使用虚拟化堆栈面板的项目控件。

每个项目都相同,但是文本等的长度作为变量。我有一个问题,项目控件中的某个项目超出了视野,希望比其上方的项目更宽。在我向下滚动之前,所有元素的宽度似乎都与该较宽元素的预期宽度相同,但是直到我将有问题的项目几乎滚动到视图中时,堆栈面板/扩展器才能正确地适应。

我有一张图片可以显示出来。左侧的列均已正确呈现,但没有任何项目想要比顶部的项目更宽。 左侧的列中有要向下扩展的项目,希望扩大,因此这些项目的“边框”会扩展,但是直到我滚动时,扩展器才能适应。

enter image description here (屏蔽了敏感信息)

我尝试使用共享大小组,但无济于事(强制将较宽项目上的文本包装起来不是问题)

以下是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>

0 个答案:

没有答案