WPF ListView Selecting Multiple List View Items

前端 未结 5 2051
故里飘歌
故里飘歌 2021-02-07 12:21

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

相关标签:
5条回答
  • 2021-02-07 12:32

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

    0 讨论(0)
  • 2021-02-07 12:38

    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.

    0 讨论(0)
  • 2021-02-07 12:56

    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
    
    0 讨论(0)
  • 2021-02-07 12:56

    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!

    0 讨论(0)
  • 2021-02-07 12:56

    Get success also WPF listview by writing

    while (lvJournalDetails.SelectedItems.Count > 0)
    {
        lvJournalDetails.Items.Remove(lvJournalDetails.SelectedItem);
    }
    
    0 讨论(0)
提交回复
热议问题