Я выясняю способ выбора нескольких элементов в виде списка и удаления их при определенном действии. Я не могу понять, как мне выбрать эти несколько элементов? Я бы подумал, что есть список, который мне нужно будет добавить в него, но какой лучший способ подойти к этой ситуации, есть ли у вас какие-либо идеи? Благодарю! Кевин
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);
}