Virtualization WPF ListView. How to disable ListView virtualization?

I have some problems with a custom ListView (CheckBoxes inside lost its state when scrolling through a ListView). Can I disable ListView virtualization without displaying the desired tree?

<ListView>
    <ListView.Resources>
        <Style TargetType="GridViewColumnHeader">
            <Setter Property="Visibility" Value="Collapsed" />
        </Style>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Address">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding Address}"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Name">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Name}"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>
+4
source share
2 answers

As indicated by HB in their answer here :

Set VirtualizingStackPanel.IsVirtualizingto false on ListViewor set normal StackPanelto ListView.ItemsPanel.

<ListView VirtualizingStackPanel.IsVirtualizing="False"/>

or

<ListView>
 <ListView.ItemsPanel>
     <ItemsPanelTemplate>
       <StackPanel></StackPanel>
      </ItemsPanelTemplate>
  </ListView.ItemsPanel>
 </ListView>
+9
source

In addition to binding IsChecked properties

You may also need to disable recirculation.

VirtualizingStackPanel.VirtualizationMode="Standard" 

Virtualization Enumeration

-1

Source: https://habr.com/ru/post/1538623/


All Articles