Silverlight: Durch das Binden eines untergeordneten Objekts wird die Eigenschaft an eine Eigenschaft in einem Benutzersteuerelement gebunden

8

Wenn ich ein Benutzersteuerelement definiert habe:

%Vor%

und es ist xaml:

%Vor%

und verwendet:

%Vor%

Wie würde ich die GradientStop-Farbe im Rectangle an den Wert der bkColor-Eigenschaft der Benutzersteuerelemente binden?

    
Jeremy 07.01.2009, 18:57
quelle

5 Antworten

8

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.

    
Simon_Weaver 27.03.2010 03:21
quelle
1

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.

    
Shawn Wildermuth 12.01.2009 02:53
quelle
0

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! : -)

    
Rob Ringham 07.01.2009 19:07
quelle
0
%Vor%     
thisisjaiswal 25.11.2009 16:47
quelle
0

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%     
plasne 30.06.2010 14:14
quelle

Tags und Links