Frage

Hey Jungs, ich habe Probleme mit dem ItemContainerGenerator in Silverlight 3.

In meiner abgeleiteten Benutzerdefinierte ListBox Ich füge diesen Handler:

ItemContainerGenerator.ItemsChanged += new ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged);

Jedes Mal, wenn die Einzelteile ändern ich einen Anruf zurück zu bekommen. Feine so weit.

Jetzt im ItemContainerGenerator_ItemsChanged möchte ich verschiedene Dinge tun auf die Aktion wie folgt abhängig:

            switch (e.Action)
        {
            case NotifyCollectionChangedAction.Add:
                Debug.WriteLine("items added");
                break;
            case NotifyCollectionChangedAction.Remove:
                Debug.WriteLine("items removed");
                break;
            case NotifyCollectionChangedAction.Replace:
                Debug.WriteLine("items removed");
                break;
            case NotifyCollectionChangedAction.Reset:
                Debug.WriteLine("items reset, itemscount:" + this.Items.Count);

                CalcMaxColumnWidths();

                break;
            default:
                break;
        }

Alles funktioniert bis jetzt in Ordnung. In den CalcMaxColumnWidths () i aufrufen, wenn die Aktion setze ich dies tun:

foreach (ListBoxItem item in ItemsControlExtensions.GetContainers(this))
        { //some code here }

Hier ist das Problem:

Die Container I mit den GetContainers zu bekommen bin versucht () Methode null zurück, obwohl die Items.Count ist der richtige Wert (60).

In WPF gibt es eine ItemContainerGenerator.Status, so konnten wir warten, bis dass auf Fertig gesetzt wurde und dann über die Behälter durchlaufen.

Wie kann ich dies in Silverlight lösen? (Ohne Timer!)

Vielen Dank für Ihre Hilfe!

War es hilfreich?

Lösung

Statt in der List-Box die ganze Magie zu tun, selbst, landete ich ein eigenes Gremium zu schaffen und sie als ItemPanel verwenden. In dem Maße Panel und anordnen Zyklen berechne ich die Spaltenbreite jetzt. In diesen Zyklen alle Behälter sind bereits erstellt. Problem gelöst.

Aber es saugt immer noch, dass der Status im ItemContainerGenerator fehlt.

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