Проблема, с которой вы сталкиваетесь, заключается в том, что привязка данных «потеряна». Позвольте мне процитировать Мэтт Талман :
Клик изменит состояние пользовательского интерфейса
кнопки правильно (например,
щелкнув Бар, снимите флажок Foo и
проверьте Бар). Но я заметил, что если
базовое значение IsFoo и IsBar
когда-либо изменившийся после этого момента,
кнопки не будут иметь свой IsChecked
состояние обновлено. Используя инструмент Snoop,
Я обнаружил, что состояние IsChecked
было установлено его состояние вручную после
нажав на одну из кнопок. однажды
свойство зависимости установлено
вручную он теряет свою привязку. это
именно поэтому состояние IsChecked не было
меняется, когда свойства
были обновлены.
Простое решение - создать подкласс класса RadioButton:
public class DataBoundRadioButton : RadioButton
{
protected override void OnChecked(RoutedEventArgs e)
{
// Do nothing. This will prevent IsChecked from being manually set and overwriting the binding.
}
protected override void OnToggle()
{
// Do nothing. This will prevent IsChecked from being manually set and overwriting the binding.
}
}
См. эту запись в блоге для более подробной информации.