只要有任何内容添加到窗口,WPF TreeView虚拟化就会中断

时间:2011-08-14 00:18:44

标签: wpf treeview virtualization

当TreeView是Window中唯一的东西时,虚拟化可以正常工作。例如:

<Grid>
    <vw:FontTreeView  x:Name="fontTreeViewControl" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderThickness="0" />
</Grid>

但即使只是添加行定义也会完全破坏虚拟化:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <vw:FontTreeView  x:Name="fontTreeViewControl" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderThickness="0" />

</Grid>

我的TreeViewItem样式具有以下触发器:

<Style.Triggers>
    <Trigger Property="VirtualizingStackPanel.IsVirtualizing" Value="true">
        <Setter Property="ItemsPanel">
            <Setter.Value>
                <ItemsPanelTemplate>
                    <VirtualizingStackPanel/>
                </ItemsPanelTemplate>
            </Setter.Value>
        </Setter>
    </Trigger>
</Style.Triggers>

当然TreeView有VirtualizingStackPanel.IsVirtualizing =“True”

Q值。如何在不破坏虚拟化的情况下在窗口中使用其他元素?谢谢你的帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

我的问题是将高度设置为自动。它必须是固定的,或使用*代替。在我的RowDefinition实例中。