Domanda

In Silverlight 2 ....

Ho un RadioButton nel mio codice XAML come segue:

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

Questa grande opera. Il mio problema è nel cercare di duplicare questo functionallity dinamicamente.

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

questo funziona, ma quando provo a mettere il convertitore in, si rompe. Qual è il modo corretto di fare questo? Eventuali esempi di buone di lavoro?

Ecco quello che ho provato ....

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);

Anche se questo compila bene, non viene eseguito correttamente. 1) Come faccio riferimento alla risorsa statica in modo dinamico? 2) Come faccio ad aggiungere questa risorsa statico al dinamico XAML? In questo momento ho questo riferimento nel codice.

Sto facendo questo più difficile di quanto deve essere?

È stato utile?

Soluzione

soluzione trovata .... Fondamentalmente ho dovuto creare un'istanza della classe convertitore e passare la sua interfaccia al convertitore in quanto tale:

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

Sono contento che si è scoperto semplice e fattibile:)

Altri suggerimenti

Anche se è possibile, come avete scoperto, sei sicuro di voler essere la creazione del RadioButton dinamicamente?

Io ci sono stato ... Ho scritto lo stesso codice esatto ... ma presto mi sono reso conto che stavo solo facendo male. Nel mio caso, ho usato un ItemsControl, e legato ai valori utilizzando un modello ... eliminando completamente la necessità di crearli da solo in modo dinamico.

Io, ovviamente, non conosco il contesto più ampio, ma prendere in considerazione se si dovrebbe fare questo più dichiarativo utilizzando una sorta di contenitore dinamico, invece.

In realtà, dopo ho scoperto MVVM, ho completamente eliminato la necessità di convertitori di dati a livello di interfaccia utente. convertitori di dati sono obsoleti con MVVM:)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top