В Silverlight 2 ....Silverlight 2 динамические привязки данных конвертер
У меня есть RadioButton в моем XAML коде следующим образом:
<RadioButton GroupName="Gender" Content="Male" IsChecked="{Binding Path=Gender, ConverterParameter=1, Mode=TwoWay, Converter={StaticResource RadioStringConverter}}" Width="49" HorizontalAlignment="Left"/>
Это прекрасно работает. Моя проблема заключается в том, чтобы динамически дублировать эту функциональность.
RadioButton rb = new RadioButton() {GroupName = "Gender", Content = "Male" ,Width = (double)49,HorizontalAlignment = System.Windows.HorizontalAlignment.Left};
Это работает, но когда я пытаюсь включить преобразователь, он ломается. Каков правильный способ сделать это? Какие-нибудь хорошие рабочие примеры?
Вот что я пытался ....
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);
Хотя это нормально компилируется, он не работает правильно. 1) Как динамически ссылаться на статический ресурс? 2) Как добавить этот статический ресурс в XAML динамически? Прямо сейчас у меня эта ссылка жестко закодирована.
Я делаю это более сложным, чем это должно быть?
Можете ли вы подробнее рассказать о MVVM, а также о динамических контейнерах? Я бы хотел увидеть некоторые небольшие образцы на вашем подходе к этому! – JLewis
Итак, вы можете найти много информации в Интернете о MVVM (Model-View-ViewModel) ... просто найдите его. Это по существу делает XAML слоем поверх всего остального и устраняет все (большинство) вашего кода. Ваш ViewModel реализует INotifyPropertyChanged и представляет собой представление пользовательского интерфейса (свойства для видимости, включено, данные, команды и т. Д.). В этом случае вы создаете модель представления, в которой есть все, что вам нужно ... bool для выбранного состояния, текст, возможно, перечисление для группы и т. Д. Затем небольшой пользовательский элемент управления, который привязывается к ViewModel. –
@Brian Genisio Это такое большое утверждение: преобразователи данных устарели с MVVM. Я получил различные элементы управления, привязанные к одному объекту. Вместо того, чтобы создавать различные поля, являющиеся своего рода представлением этого объекта и используя несколько PropertyChangedEvents, я запускаю одно событие и позволяю конвертерам выполнять свою работу, чтобы отобразить его как изображение, текст,% и bool. Не могли бы вы сказать свой подход к такой ситуации, без конвертеров. Потому что есть шанс, что я совершенно не слышу. –