VirtualizingStackPanel + MVVM + seleção múltipla
Eu implementei um padrão de seleção semelhante ao descrito emesta postagem usando um ViewModel para armazenar o valor IsSelected, e ligando oListViewItem.IsSelected
para o ViewModel IsSelected:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
Funciona em geral, mas me deparo com um problema grave. Usando o aVirtualizingStackPanel
como o painel na exibição de lista, apenas o visívelListViewItem
estão sendo criados. Se eu uso "Ctrl + A" para selecionar todos os itens, ou usando a combinação de atalhos como "Shift + Ctrl + End" no primeiro item, todos os itens são selecionados, mas para os itens não visíveis, o ViewModel não obtém seu IsSelected definido como verdadeiro. Isso é lógico, porque se oListViewItem
não são criados, a ligação não pode funcionar.
Alguém experimentou o mesmo problema e encontrou uma solução (além de não usarVirtualizingStackPanel
)