Tôi có một ViewModel
có một tài sản mà tôi ràng buộc trong ListView.ItemContainerStyle
XAML của tôi để một tài sản trong mô hình quan điểm của tôi IsSelected
IsSelected
.WPF Binding IsSelected để ViewModel không đặt mục chưa được hiển thị trong Danh sách
Tôi tải lên ứng dụng và điền vào bộ sưu tập mô hình chế độ xem (được hiển thị trong số ListView
) của tôi với nhiều mục, nói khoảng 2000. Sau đó, tôi chọn mọi thứ trong danh sách qua Ctrl-A. Các mục trong bộ sưu tập mô hình chế độ xem của tôi chỉ nhận được số IsSelected
được đặt cho các mục được hiển thị trong ListView
. Nếu tôi lật trang qua danh sách, IsSelected
sẽ được đặt cho bất kỳ mục nào được hiển thị. Nếu tôi trang qua tất cả các mục thì tất cả các mục trong mô hình chế độ xem của tôi có thuộc tính IsSelected
được đặt thành true.
Đây là XAML của tôi cho ràng buộc IsSelected
trong giao diện danh sách để mô hình quan điểm của tôi:
<ListView Margin="5" ItemsSource="{Binding FilteredComparisonList}" x:Name="comparisonListView">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}" />
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Header="Source filename" DisplayMemberBinding="{Binding ImageFile.BaseFilename}" Width="Auto" />
</GridView>
</ListView.View>
</ListView>
Tại sao không phải là IsSelected
cho tất cả các mục trong mô hình quan điểm của tôi thiết lập là true khi tôi chọn tất cả các mục trong ListView
?
Nhân tiện, đây thực chất là cùng một câu hỏi như sau: http://stackoverflow.com/questions/1273659/virtualizingstackpanel-mvvm-multiple-selection – Charlie
Cảm ơn Charlie, không biết tôi đã bỏ lỡ bài đăng đó như thế nào. Bài đăng đó có một giải pháp tốt cho vấn đề này là chuyển các mục đã chọn vào dưới dạng CommandParameter thay vì duy trì IsSelected trong mô hình khung nhìn. – Buck