Frage

In Silverlight 2 ....

Ich habe einen Radiobutton in meiner XAML-Code wie folgt:

<RadioButton GroupName="Gender" Content="Male" IsChecked="{Binding Path=Gender, ConverterParameter=1, Mode=TwoWay, Converter={StaticResource RadioStringConverter}}" Width="49" HorizontalAlignment="Left"/>

Dies funktioniert gut. Mein Problem ist bei dem Versuch, diese functionallity dynamisch zu duplizieren.

RadioButton rb = new RadioButton() {GroupName = "Gender", Content = "Male" ,Width = (double)49,HorizontalAlignment = System.Windows.HorizontalAlignment.Left};

Das funktioniert aber wenn ich versuche, den Konverter in setzen, er bricht. Was ist der richtige Weg, dies zu tun? Jedes gute Arbeitsbeispiele?

Hier ist, was ich versucht ....

RadioButton rb = new RadioButton() {GroupName = "Gender", Content = "Male" ,Width = (double)49,HorizontalAlignment = System.Windows.HorizontalAlignment.Left};

RadioStringConverter rsc = new RadioStringConverter();

Binding binding = new Binding(layout.FieldName) { Source = mainLayout.DataContext, Mode = BindingMode.TwoWay,ConverterParameter = 1,Converter = rsc};  // to emulate the "{StaticResource RadioStringConverter}"};

rb.SetBinding(RadioButton.IsCheckedProperty, binding);

sp.Children.Add(rb);

Obwohl diese fein kompiliert, es nicht ordnungsgemäß ausgeführt. 1) Wie verweisen ich die statische Ressource dynamisch? 2) Wie kann ich diese statische Ressource den XAML dynamisch? Im Moment habe ich diese Referenz hart codiert.

Was mache ich dies schwieriger, als es sein muss?

War es hilfreich?

Lösung

Lösung gefunden .... Im Grunde hatte ich eine Instanz der Konverter-Klasse erstellen und übergeben es ist Schnittstelle an den Wandler als solche:

Binding binding = new Binding(layout.FieldName) { Source = mainLayout.DataContext, Mode = BindingMode.TwoWay,ConverterParameter = 1,Converter = (rsc as IValueConverter)};

Gut, dass es stellte sich heraus, einfach und machbar:)

Andere Tipps

Obwohl es möglich ist, wie Sie herausgefunden haben, sind Sie sicher, dass Sie dynamisch die Radiobutton zu erstellen?

Ich habe dort gewesen ... Ich habe genau die gleiche Code geschrieben ... aber ich merkte bald, dass ich es falsch, nur tat. In meinem Fall habe ich ein Itemscontrol und band die Werte mit Hilfe einer Schablone ... vollständig entfällt die Notwendigkeit, sie dynamisch von mir zu schaffen.

Ich weiß natürlich nicht den größeren Zusammenhang, aber bedenken Sie, wenn Sie dies deklarativ stattdessen eine Art von dynamischen Container verwenden sollten zu tun.

Eigentlich nachdem ich MVVM entdeckte ich, beseitigt vollständig die Notwendigkeit für Datenwandler an der UI-Ebene. Datenwandler sind veraltet mit MVVM:)

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