WPF ListView Выбор нескольких элементов просмотра списка

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

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

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

Ура!

Ответ 4

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

Вот как это выглядит:

<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

Ответ 5

Получите успех и просмотр списка WPF, написав

while (lvJournalDetails.SelectedItems.Count > 0)
{
    lvJournalDetails.Items.Remove(lvJournalDetails.SelectedItem);
}