Frage

Gibt es eine Möglichkeit zu sagen, wenn die Behälter fertig für eine Listview gemacht?

Eine detaillierte Erklärung dessen, was ich getan habe, so weit

Ich habe ein Listview-Steuerelement, das eine Datatemplate in einen ihrer Spalten hat, die eine CheckBox Control enthält .. Ich habe herausgefunden, wie die CheckBox dynamisch das Objekt mit zuzugreifen, dass die Listview gebunden ist.

                ListViewItem lItem = (ListViewItem)ListView.ItemContainerGenerator.ContainerFromItem(trackToHandle);
                CheckBox checkBoxToHandle = FindChild<CheckBox>(lItem, "CheckBox");

Das Problem ist, dass die Kontrollkästchen „Reset“ (nicht markiert werden), wenn ich scrollen zu weit oder wenn ich die Spalten sortieren. Ich finde heraus, das war, weil die VirtualizingStackPanel wurde nur für die Listviewitem Behälter auszuspucken, die sichtbar (oder fast sichtbar) waren .. Und weil die CheckBox in einem Datatemplate ist, die in der XAML definiert ist es jedes Mal geworfen wird weg geht es die Ansicht oder wenn die Liste sortiert ist.

Ich habe um diese durch eine separate Liste von Kontrollkästchen Erstellung und Verwendung der tatsächlichen Checkboxes „klicken Sie auf“ Ereignis den Zustand des entsprechenden CheckBox in meiner Liste zu ändern .. dann ein wenig Methode machte den Zustand aller sichtbaren gehen ändern Checkbox, wenn der Benutzer blättert ... als Folge es, wie es scheint, in erster Linie haben sollte.

Außer, wenn ich die Spalten sortieren. Ich habe versucht, es wieder tun, um die Checkbox zu machen (wie vorher) direkt nach dem es einer Spalte sortiert würde, aber es hat nicht funktioniert. Meine beste Vermutung ist, dass es nicht sofort macht die Behälter, nachdem ich sortiere ..

Gibt es eine Möglichkeit zu sagen, wenn die Behälter fertig für eine Listview gemacht?

War es hilfreich?

Lösung

If you bind your checkboxes IsChecked property to a boolean property on your data context, then you will not have this issue.

The whole purpose of the VirtualizingStackPanel is reduce memory usage by not creating ListItem's unless needed.

In effect, you need to move the data side of the checkbox away from the control.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top