2009-04-01 10 views
0

Ich habe eine kleine Benutzersteuerung, die im Grunde einen Wert um eins erhöht oder verringert. Das Benutzersteuerelement hat zwei Schaltflächen (einen zum Hinzufügen und den anderen zum Subtrahieren) und einen Textblock, der zum Anzeigen des Werts verwendet wird.Silverlight Databinding ein TextBlock in einem anderen Benutzer Steuerelement

Ich werde mehrere Instanzen dieses Benutzersteuerelements in einem anderen Benutzersteuerelement haben, damit ich Werte einer Datenklasse bearbeiten kann, die über eine INotifyPropertyChanged-Schnittstelle verfügt. Meine Frage ist, wie kann ich den TextBlock des Wertes ändern, der Benutzerkontrolle zum Benutzercontrol ändert, das ich instansiated?

Antwort

4

Zunächst möchte ich feststellen, dass Silverlight 2 Element-zu-Element-Bindung nicht unterstützt. Diese Funktion wurde in Silverlight 3 (jetzt in der Betaversion) hinzugefügt. Allerdings glaube ich nicht, dass Sie die Steuerelemente ohnehin zusammenbinden wollen. Es klingt, als ob Sie versuchen, ein NumericUpDown-Steuerelement zu erstellen, und Sie haben wahrscheinlich eine Klasse in Code dahinter, die tatsächlich das Inkrementieren und Dekrementieren durchführt.

Wenn dies der Fall ist, können Sie einfach die Click-Handler abonnieren und eine Methode auf Ihrem Modell wie Increment oder Decrement aufrufen. Ihr Modell kann eine Eigenschaft für den aktuellen Wert verfügbar machen und diese Eigenschaft ist an das Textfeld gebunden.

Wenn Sie jetzt versuchen, ein NumericUpDown-Steuerelement zu erstellen, sollten Sie das Silverlight Toolkit ausprobieren. Das Toolkit enthält dieses Steuerelement bereits und es unterstützt auch die Datenbindung.

Überprüfen Sie die NumericUpDown-Steuerung here, und laden Sie das Toolkit here herunter.

Schließlich ist die Bindung von einem Kind Steuerelement zu einem übergeordneten Steuerelement wirklich nicht anders. Das übergeordnete UserControl verfügt über einen DataContext und alle untergeordneten Steuerelemente übernehmen das. Für jedes einzelne untergeordnete Steuerelement kann auch DataContext festgelegt werden. Bindende Ausdrücke sind immer relativ zum DataContext und der DataContext kann im Code gesetzt werden. In Ihrem Fall wahrscheinlich zu einem Modell irgendeiner Art.

Ich hoffe, dass hilft.

Verwandte Themen