снятые флажки wpf-радио - PullRequest
3 голосов
/ 29 декабря 2010

У меня есть две радиокнопки.

Один (rb1) привязан к свойству моего ViewModel.Если свойство имеет значение true, rb1 проверяется при загрузке приложения.Если свойство имеет значение false rb1 не проверено (это верно).

Но в последнем случае обе радиокнопки не проверяются, и мне нужна вторая радиокнопка (rb2), когда свойство имеет значение false.Как я мог это сделать ??

1 Ответ

0 голосов
/ 15 марта 2011

Проблема, с которой вы сталкиваетесь, заключается в том, что привязка данных «потеряна». Позвольте мне процитировать Мэтт Талман :

Клик изменит состояние пользовательского интерфейса кнопки правильно (например, щелкнув Бар, снимите флажок 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.
     }
}

См. эту запись в блоге для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...