У меня есть, казалось бы, простая задача, которая дает мне головные боли и будет признательна за помощь.Проблемы с привязкой к RadioButton
Что я хочу сделать, это привязка двух логических значений к свойству IsChecked двух RadioButton
s, которые используют один и тот же GroupName
(так что только один из них проверяется одновременно).
Проблема, с которой я сталкиваюсь, заключается в том, что, когда Содержимое ContentPresenter собирается изменить (посредством привязки к SelectedItem из ComboBox), текущее содержимое получает вызов свойства-установщика со значением того же свойства но из модели представления, которая вот-вот станет новым контентом. (!) Конечным результатом является изменение модели представления, несмотря на отсутствие щелчка на RadioButton, связанного с рассматриваемым свойством.
Я поставил together a sample app, что указывает на проблему. Чтобы воспроизвести, запустите приложение и выполните следующие действия:
- Выберите «Один» в поле combobox => MyPropery, MyProperty2 - нет.
- Выберите «Три» в поле combobox => MyPropery, MyProperty2 - нет.
- Пока еще есть «Три» выбран, нажмите MyProperty2 => MyProperty2 проверяется (также указывается в выходном окне отладки)
- Выберите «One» в поле со списком => MyPropery проверяется, MyProperty2 нет. Обратите внимание на то, как окно отладки показывает, как MyProperty2 объекта «Три» установлен в значение false здесь
- Выберите «Три» в combobox => Теперь ни один из переключателей Radiobuttons не установлен (из-за # 4).
Если между # 3 и №4 вы выберите «Два» в выпадающем списке, чтобы ContentPresenter отобразил другое представление (выбранное с помощью DataTemplate), проблема не появляется !?
Может ли кто-нибудь объяснить, почему свойство указано на шаге 4, когда представления обмениваются ContentPresenter и что можно сделать по этому поводу?
+1. Рейчел абсолютно прав: сгенерированные UIElements DataTemplate кэшируются, и ваша CheckBox Grouping в пользовательском интерфейсе запускается в ViewModel, испортив ваши флажки. – SvenG
Итак, в основном, GroupName и MVVM/DataTemplates не смешиваются. :(Я не могу использовать решение ListBox, потому что я должен поместить RadioButtons, отделенные от eachother. Я предполагаю, что мне придется использовать регулярные флажки вместо этого и обрабатывать Группировку в VM вместо этого. Спасибо за помощь. – Per