können also sagen, ich habe diese Klassen:WPF: SelectedItems mit doppelten Objektreferenzen
public class Person
{
public string Name { get; set; }
}
public class PersonCollection : ObservableCollection<Person> { }
Und lässt sagen, ich habe ein Listview dessen Itemssource ist an einem PersonCollection gebunden. Jetzt kann sagen, ich habe diesen Code:
public void AddPeople()
{
Person p = new Person() { Name = "Someone" };
MyPersonCollection.Add(p);
MyPersonCollection.Add(p);
MyPersonCollection.Add(p);
}
So, jetzt habe ich ein Listview mit drei Elementen, in denen alle drei Elemente Verweise auf das gleiche Objekt sind. So, jetzt wähle ich lies sagen Artikel mit Index 0 und 2 in der ListView.
Die ListView.SelectedItems-Eigenschaft wird sagen, ich habe ein Element ausgewählt, da beide visuell ausgewählte Elemente das gleiche Objekt sind.
Also wie kann ich die visuell ausgewählten Elemente erhalten, so dass ich die Elemente bei den Indizes 0 und 2 entfernen kann, ohne das Element bei Index 1 zu entfernen?
Danke das hat funktioniert. Ich bin nicht ganz sicher, was Sie mit Virtualisierung meinen, aber mit dem einfachen Projekt, das wir machen, wird uns das genügen. Vielen Dank. – Nick
Was ich meine ist, dass manchmal nicht jede Person in der Items-Auflistung ein ListViewItem aufgrund der Virtualisierung hat. Wenn Sie die erste Person in der ListView auswählen und dann nach unten scrollen, damit sie verschwindet, ist es möglich, dass der Aufruf von ItemContainerGenerator.ContainerFromIndex (0) null zurückgibt. –