Oft, wenn ich diese Frage gesehen habe, lautet die Antwort "Du musst es im Code machen", was für mich wie "Silverlight-Bindung unterstützt dies nicht" klingt - also musst du es tun vollständig manuell ', indem Sie die Eigenschaft manuell festlegen. Aber das ist nicht der Fall:
Silverlight-Bindung unterstützt dies - es ist nur Silverlight XAML, das nicht.
Hier ist ein Beispiel für eine UserControl
, die im Grunde eine DataForm
umschließt. Im Konstruktor führen Sie die Bindung aus, die an Ihre 'Benutzersteuerungseigenschaft' gebunden werden kann. Hoffentlich, wenn sie die XAML-Unterstützung dafür in Zukunft ändern, dann wird es trivial sein, zurück zu kommen und zu beheben.
App.xaml
%Vor%AddressControl.xaml
%Vor%Optional: zeigt an, dass Sie den Wert im Code an einen Kommentar gebunden haben
AddressControl.xaml.cs
%Vor% Dies bindet die Eigenschaft MyHeader
für meine AddressControl
usercontrol an die Eigenschaft Header
im Datenformular. Ich habe es "nur" für die einfache Lesbarkeit gemacht - aber ich benutze nur "Header" in meinem echten Code.
Schade, dass wir das in XAML immer noch nicht machen können, aber es ist besser als das, was ich zuerst versucht habe, nämlich die DataContextChanged
-Ereignisse zu erfassen und dann die Dinge manuell einzustellen.
Der einzige Weg ist, dies programmtechnisch zu tun (zB im Change-Event für die BkColor (vorausgesetzt, es handelt sich um eine DependencyProperty), ändern Sie es an den anderen Stellen auf Ihrem Control.Als Alternative könnten Sie eine ControlTemplate verwenden und TemplateBinding verwenden Umgehung dafür (z. B. kein Verhalten / Methoden / Ereignisse), dann ersetzen Sie Ihr Benutzersteuerelement mit einem ContentControl und verwenden Sie Template Bindng.
Sehen Sie sich diesen Blog-Beitrag an: Problemumgehung für fehlendes ElementName in der Silverlight 2.0-Bindung . Es klingt, als wäre es ein bisschen anders als das, was Sie tun möchten, aber Sie können möglicherweise seinen Code streiten, um das zu tun, was Sie wollen. Viel Glück! : -)
Es gibt noch eine andere Möglichkeit. Während es scheint, dass Sie die Farbwerte nicht selbst binden können, können Sie die gesamte Hintergrundeigenschaft wie folgt binden:
& lt; Border BorderThickness="2" BorderBrush="Schwarz" CornerRadius="20" Background="{Bindungspfad = Hintergrund}" / & gt;
... und dann ...
%Vor%Tags und Links .net silverlight