Vraag WPF Lijstweergave Meerdere lijstweergave-items selecteren


Ik ben een manier aan het uitzoeken om meerdere items te selecteren in de lijstweergave en ze te verwijderen voor een bepaalde actie. Wat ik niet kan achterhalen is, hoe zou ik deze meerdere items geselecteerd moeten hebben? Ik denk dat er een lijst is waar ik ze allemaal aan moet toevoegen, maar wat is de beste manier om deze situatie te benaderen, heb je ideeën? Bedankt! -Kevin


11
2018-02-17 15:55


oorsprong


antwoorden:


set SelectionMode naar Multiple of Extended en itereer door deSelectedItems in uw ListView.


21
2018-02-17 15:58



Ik zou willen voorstellen om de SelectedItems eigendom van ListView, in plaats daarvan binden Selected eigendom van de single ListViewItem, naar een overeenkomstige ViewModel klasse. Hierna is het enige dat u hoeft te doen om alles te vinden ViewModel object dat de Selected eigenschap TRUE, verwijder ze uit de modelverzameling (als je ze verwijdert) en vernieuw de gebruikersinterface. Als de verzameling is ObservableCollection, de gebruikersinterface wordt automatisch vernieuwd. Succes.


8
2018-02-18 16:42



U kunt een van de volgende dingen doen ...

ListView.SelectionMode = SelectionMode.Extended in code achter of

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

je hebt ook 'multiple' selectionMode maar je zou liever 'extended' gaan, waardoor de gebruiker meerdere items alleen met shift modifier kan selecteren.

Voor het verwijderen van de geselecteerde items kunt u de ListView.SelectedItems Propery als volgt gebruiken

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

[of u zou de eigenschap SelectedIndices kunnen gebruiken]

Ik hoop dat dit het probleem zal voorkomen dat je tegenkwam :)

Proost!


4
2018-02-18 09:32



Het antwoord van Arcturus is goed als je MVVM niet gebruikt. Maar als u dat wel doet en uw ItemsSource is gebonden aan een aantal ObservableCollection van objecten in uw ViewModel, zou ik Tigran-antwoord aanraden, met uitleg van Noman Khan.

Dit is hoe het eruit zou zien:

<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 zou je een object hebben: public ObservableCollection<SomeItem> SomeListViewList{ get; set; }

SomeItem Class zou een Selected property bevatten:

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

    public string SomeItemNum { get; set; }

    public bool SomeItemSelected { get; set; }
}

Vervolgens kunt u de lijst herhalen / uitvoeren en de geselecteerde selecteren:

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

2
2017-10-26 13:53



Succes ook WPF listview door te schrijven

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

0
2018-02-27 11:01