WPF ListView Selecting Multiple List View Items

帅比萌擦擦* 提交于 2021-01-20 19:12:56

问题


I am figuring out a way to Select Multiple items in list view and deleting them on a certain action. What I can't figure out is, how should I have these multiple items selected? I would think there is a list that I would need to add them all into, but what's the best way to approach this situation, do you have any ideas? Thanks! -Kevin


回答1:


Set SelectionMode to Multiple or Extended and iterate through theSelectedItems in your ListView.




回答2:


I would suggest do not use the SelectedItems property of ListView, instead bind the Selected property of the single ListViewItem, to a corresponding ViewModel class. After this, the only thing you need to do is to find all ViewModel object that have bound the Selected property TRUE, remove them from model collection (if you do remove) and refresh UI. If the collection is ObservableCollection, the UI will be refreshed automatically. Good Luck.




回答3:


Arcturus answer is good if you're not using MVVM. But if you do and your ItemsSource is binded to some ObservableCollection of objects in your ViewModel, I would recommend Tigran answer, with Noman Khan clarification.

This is how it would look like:

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

In View Model you would have object: public ObservableCollection<SomeItem> SomeListViewList{ get; set; }

SomeItem Class would include a Selected property:

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

    public string SomeItemNum { get; set; }

    public bool SomeItemSelected { get; set; }
}

Then you could iterate/run over the list and get the ones that are selected:

foreach (var item in SomeListViewList)
   if (item.SomeItemSelected)
      // do something



回答4:


You can do one of the following...

ListView.SelectionMode = SelectionMode.Extended in code-behind or

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

you also have 'multiple' selectionMode yet you could rather go for 'extended' which allows the user to select multiple items only using shift modifier.

For deleting the items selected you could use the ListView.SelectedItems Propery as follows

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

[or you could use the SelectedIndices property]

Hope this will avoid the issue you encountered :)

Cheers!




回答5:


Get success also WPF listview by writing

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


来源:https://stackoverflow.com/questions/2282138/wpf-listview-selecting-multiple-list-view-items

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!