ListView + MultipleSelect + MVVM =? - PullRequest
       7

ListView + MultipleSelect + MVVM =?

9 голосов
/ 24 марта 2010

Если бы я сказал «черт с ним!», Я мог бы просто дать своему ListView с SelectionMode = «Multiple» имя и иметь возможность очень легко получить все выбранные элементы. Но я стараюсь как можно больше придерживаться MVVM, и я хочу каким-то образом привязать данные к ObservableCollection, которая содержит значение из столбца Name для каждого выбранного элемента. Как в мире вы делаете это? Одиночный выбор прост, но решение с множественным выбором не очевидно для меня с моими текущими знаниями WPF / MVVM.

Я прочитал этот вопрос на SO , и хотя он дает мне некоторое хорошее представление, я не знаю, как добавить необходимую привязку к строке, потому что я использую ListView с GridView. как его представление, а не ListBox.

Вот как выглядит мой 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>

Похоже, что правильно сделать, это привязать данные свойства IsSelected каждой строки к каждому объекту, хранящемуся в ObservableCollection, к которой я привязываю данные. Я просто не понял, как это сделать.

1 Ответ

11 голосов
/ 24 марта 2010

Напишите ItemContainerstyle в ListView и поместите Setter, чтобы сделать привязку к свойству IsMelected ViewModel

<Style TargetType="{x:Type ListViewItem}">
   <Setter Property="IsSelected" Value="{Binding IsSelected,Mode=OneWayToSource}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...