WPF ListView Выбор нескольких элементов списка - PullRequest
12 голосов
/ 17 февраля 2010

Я придумываю способ выбрать несколько элементов в виде списка и удалить их при определенном действии. Что я не могу понять, так это как выбрать несколько элементов? Я думаю, что есть список, в который мне нужно было бы добавить их все, но как лучше всего подойти к этой ситуации? Спасибо! * 1001 Кевин *

Ответы [ 5 ]

23 голосов
/ 17 февраля 2010

Установите SelectionMode на Multiple или Extended и выполните итерацию по SelectedItems в вашем ListView.

9 голосов
/ 18 февраля 2010

Я бы предложил не использовать свойство SelectedItems ListView, а вместо этого связать свойство Selected одиночного ListViewItem с соответствующим классом ViewModel. После этого единственное, что вам нужно сделать, - это найти все ViewModel объекты, которые связали свойство Selected TRUE, удалить их из коллекции моделей (если вы удалили) и обновить интерфейс. Если коллекция ObservableCollection, пользовательский интерфейс будет обновлен автоматически. Удачи.

4 голосов
/ 18 февраля 2010

Вы можете сделать одно из следующих ...

ListView.SelectionMode = SelectionMode.Extended в коде или

<ListView SelectionMode="Extended"></ListView> в XAML

у вас также есть «множественный» режим выбора, но вы можете предпочесть «расширенный», который позволяет пользователю выбирать несколько элементов только с помощью модификатора сдвига.

Для удаления выбранных элементов вы можете использовать свойства ListView.SelectedItems следующим образом:

while( myListView.SelectedItems.Count > 0 )
{
    myListView.Items.Remove(list.SelectedItems[0]);
}

[или вы можете использовать свойство SelectedIndices]

Надеюсь, это поможет избежать проблемы, с которой вы столкнулись:)

Ура!

3 голосов
/ 26 октября 2017

Ответ Arcturus хорош, если вы не используете MVVM. Но если вы это сделаете, и ваш ItemsSource привязан к некоторой ObservableCollection объектов в вашей ViewModel, я бы порекомендовал ответ Tigran с пояснениями Noman Khan.

Вот как это будет выглядеть:

<ListView ItemsSource="{Binding SomeListViewList}">
    <ListView.Resources>
       <Style TargetType="{x:Type ListViewItem}">
          <Setter Property="IsSelected" Value="{Binding SomeItemSelected, Mode=TwoWay}" />
       </Style>
    </ListView.Resources>
    ...
</ListView>

В View Model у вас будет объект: public ObservableCollection<SomeItem> SomeListViewList{ get; set; }

SomeItem Class будет включать свойство Selected:

public class SomeItem
{
    public string SomeItemName { get; set; }

    public string SomeItemNum { get; set; }

    public bool SomeItemSelected { get; set; }
}

Тогда вы можете перебрать список и получить список выбранных:

foreach (var item in SomeListViewList)
   if (item.SomeItemSelected)
      // do something
0 голосов
/ 27 февраля 2011

Добейтесь успеха и WPF listview, написав

while (lvJournalDetails.SelectedItems.Count > 0)
{
    lvJournalDetails.Items.Remove(lvJournalDetails.SelectedItem);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...