0

私はWPFリストビューを持っており、リストが大きい場合はスクロールビューアーが表示されます。ListView には、チェックボックス要素を持つ項目が含まれています。ユーザーがすべてを選択したり、すべてを選択解除したりできるようにします。

私が経験した問題は、リストが大きい場合のみです。つまり、要素のサブセットが表示され、ユーザーはスクロール バーを使用して残りの要素を表示する必要があります。すべての要素を選択してすべての要素を選択解除するコードは、VisualTreeHelper ヘルパー クラスを使用して、チェックボックスのプロパティ IsChecked を true または false に設定しています。ただし、表示されている要素に対してのみ機能します。たとえば、画面に 10 個のチェックボックスが表示される 14 個のチェックボックスを持つコレクションがある場合、表示されている 10 個のみが選択されます。ただし、[すべて選択] をクリックする前に、上下にスクロールしてアイテムを表示すると、14 個すべてが選択されます。したがって、VisualTree は必要な要素のみをロードするように見えます。すべての要素を強制的にロードする方法はありますか?

ListView で ScrollViewer を無効にし、ScrollViewer で囲むことで動作させることができました。これは正しいアプローチですか?

前:

<ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" />

機能するソリューション:

<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" Grid.Row="1">
                    <ListView x:Name="lstProducts" ItemsSource="{Binding Products}" ItemContainerStyle="{StaticResource STYLE_LISTVIEWITEM}" Grid.Row="1" Margin="4" SelectionMode="Multiple" ScrollViewer.CanContentScroll="False" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" />
</ScrollViewer>

お知らせ下さい!

4

1 に答える 1

2

<ListView VirtualizingStackPanel.IsVirtualizing="false" />リストビュー コンテナーがリサイクルされ、可視コンテナーのみが存在するため、仮想化をオフにしてみてください。

于 2014-03-20T13:13:29.373 に答える