私は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>
お知らせ下さい!