ListView + MultipleSelect + MVVM =?

si je devais dire "au diable!", Je pourrais simplement donner mon ListView avec SelectionMode= "Multiple" un nom, et être capable d'obtenir tous les éléments sélectionnés très facilement. Mais j'essaie de m'en tenir à MVVM autant que possible, et je veux d'une certaine façon databind à une collection observable qui détient la valeur de la colonne du nom pour chaque élément sélectionné. Comment faites-vous cela? La sélection simple est simple, mais la solution de sélection multiple ne me paraît pas évidente avec mon WPF / MVVM actuel connaissance.

I lisez cette question sur SO, et bien que cela me donne un bon aperçu, Je ne sais pas comment ajouter la liaison nécessaire à une rangée, parce que j'utilise une ListView avec une GridView comme Vue, pas une ListBox.

voici à quoi ressemble mon XAML:

<ListView DockPanel.Dock="Top" ItemsSource="{Binding ClientPreview}" SelectionMode="Multiple">
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridViewColumn Header="Name">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Name}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Address">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Path=Address}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

il semble que la bonne chose à faire est de databind la propriété IsSelected de chaque ligne à chaque objet stocké dans la collection observable à laquelle je suis databinding. Je viens de n'ai pas compris comment faire.

9
demandé sur Community 2010-03-24 03:18:46

1 réponses

Ecrire ItemContainerstyle sur la ListView et mettre un Setter pour faire la liaison à votre propriété ViewModel 'IsSelected'

<Style TargetType="{x:Type ListViewItem}">
   <Setter Property="IsSelected" Value="{Binding IsSelected,Mode=OneWayToSource}"/>
11
répondu Jobi Joy 2010-03-24 03:48:06