Ho un ViewModel
che ha un IsSelected
proprietà che mi legano a mio ListView.ItemContainerStyle
XAML a un IsSelected
proprietà a mio modello di vista.WPF Binding IsSelected al ViewModel non imposta oggetti che non sono stati indicati nella lista
porto in su l'applicazione e popolare la collezione vista del modello (che viene mostrato nel mio ListView
), con un sacco di elementi, dicono circa 2000. Poi selezionare tutto nella lista tramite Ctrl-A. Gli elementi nella mia collezione del modello di visualizzazione ottengono solo il set IsSelected
per gli articoli che sono visibili nello ListView
. Se faccio scorrere verso il basso l'elenco, IsSelected
viene impostato per qualsiasi oggetto visualizzato. Se sfoglio tutti gli elementi, tutti gli elementi nel mio modello di vista hanno la proprietà IsSelected
impostata su true.
Ecco il mio XAML per il legame del IsSelected
nella vista elenco alla mia vista del modello:
<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>
Perché non è IsSelected
per tutti gli articoli nel mio modello di vista impostate su true quando seleziono tutti gli articoli nello ListView
?
Tra l'altro, questo è essenzialmente la stessa domanda come questa: http://stackoverflow.com/questions/1273659/virtualizingstackpanel-mvvm-multiple-selection – Charlie
Grazie Charlie, non so come ho perso quel post. Quel post ha una buona soluzione a questo problema che consiste nel passare gli elementi selezionati come CommandParameter invece di mantenere IsSelected nel modello di visualizzazione. – Buck