У меня, казалось бы, простая задача, которая вызывает у меня головную боль и я был бы признателен за некоторую помощь.
Я хочу выполнить привязку двух логических значений к свойству IsChecked двух RadioButton
с, разделяяGroupName
(поэтому проверяется только один).
Проблема, с которой я сталкиваюсь, заключается в том, что когда содержимое ContentPresenter собирается измениться (через привязку к SelectedItem ComboBox),Текущий контент получает вызов к Property-setter со значением того же свойства, но из модели представления, которая собирается стать новым контентом.(!) Конечным результатом является изменение модели представления, несмотря на отсутствие щелчка по RadioButton, привязанному к рассматриваемому свойству.
Я собрал вместе с примером приложения , котороепоказывает проблему.Для воспроизведения запустите приложение и выполните следующие действия:
- Выберите «Один» в поле со списком => MyPropery отмечен, MyProperty2 нет.
- Выберите «Три» в поле со списком=> MyPropery отмечен, MyProperty2 - нет.
- Пока выбран «Три», нажмите MyProperty2 => MyProperty2 отмечен (также отображается в окне вывода отладки)
- Выберите «Один»в выпадающем списке => MyPropery проверено, MyProperty2 нет. Обратите внимание, как в окне отладки показано, как для MyProperty2 объекта «Три» установлено значение false здесь
- Выберите «Три» в поле со списком => Ни одна из радиокнопок теперь не проверена (из-за #4).
Если между # 3 и # 4 вы сначала выбираете «Два» в выпадающем списке, чтобы ContentPresenter отображал другое представление (как выбрано с помощью DataTemplate), проблема не возникает!?
Может кто-нибудь объяснить, почему свойство устанавливается на шаге # 4, когда ContentPresenter обменивается представлениями, и что с этим можно сделать?