在列表框中使用虚拟化时,展开器会自动折叠

时间:2013-04-22 02:24:03

标签: c# wpf virtualization

我有一个Listbox控件,我在所有项目中都有一个扩展器控件,以便用户可以展开每个项目。但是,当我展开几个项目并滚动它。有时候扩展器会自动崩溃。

 <ListBox x:Name="listbox" ItemsSource="{Binding Persons}" Background="LightBlue"
            ItemTemplate="{StaticResource PersonDataTemplate}"
            ItemContainerStyle="{StaticResource ListBoxItemStyle}" 
            VirtualizingPanel.IsVirtualizing="True"
            VirtualizingPanel.IsVirtualizingWhenGrouping="True" 
            HorizontalContentAlignment="Stretch">
        <ListBox.GroupStyle>
            <GroupStyle HeaderTemplate="{StaticResource GroupHeaderTemplate}" />
        </ListBox.GroupStyle>

    </ListBox>

和资源

    <DataTemplate x:Key="PersonDataTemplate" DataType="{x:Type local:Person}">
        <Grid>
            <Expander >
                <Expander.Header>
                    <TextBlock Text="{Binding Name}"/>
                </Expander.Header>
                <!--This will take time to be instancied-->
                <!--<local:TimeConsumingControl />-->
                <!--Rest of the data template-->
                <Border Margin="4" BorderBrush="Black" BorderThickness="1" MinHeight="40" CornerRadius="3" Padding="3">

                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition />
                            <!--<RowDefinition />-->
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition />
                        </Grid.ColumnDefinitions>
                        <TextBlock Text="Name : " Grid.Row="0" FontWeight="Bold" HorizontalAlignment="Right" />
                        <TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding Name}" />
                        <TextBlock Text=" - Age : " Grid.Column="2" Grid.Row="0" FontWeight="Bold"
                                HorizontalAlignment="Right" />
                        <TextBlock Grid.Column="3" Grid.Row="0" Text="{Binding Age}" />
                    </Grid>
                </Border>
            </Expander>
        </Grid>
    </DataTemplate>

如何防止项目崩溃。我仍然想使用虚拟化。

0 个答案:

没有答案