У меня есть несколько радиокнопок в групповом поле. Я выбираю кнопки случайным образом, и все работает отлично с визуальной точки зрения, а также каждый раз, когда выбирается новая кнопка, вызывается обработчик событий.
Теперь у меня есть свойство зависимости с обратным вызовом при изменении значения. Когда в этой процедуре обратного вызова я читаю значение IsChecked любой кнопки, значение равно False, несмотря на то, что кнопка визуально выбрана (они все ложные одновременно, странно). Отладчик также отображает все кнопки без флажка.
Ху, мне не хватает представления о причине после базовых проверок ...
<GroupBox>
<StackPanel>
<RadioButton x:Name="btNone"
Content="Disconnected"
IsChecked="True"
Checked="OnSelChecked"/>
<RadioButton x:Name="btManual"
Content="Manual"
Checked="OnSelChecked"/>
</StackPanel>
</GroupBox>
Обработчик событий:
private void OnSelChecked(object sender, RoutedEventArgs e) {
if (btManual.IsChecked == true) {
// is called
}
}
Свойство зависимости:
public static readonly DependencyProperty ManualProperty =
DependencyProperty.Register("Manual",
typeof(Position), typeof(SwitchBox),
new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.AffectsRender,
new PropertyChangedCallback(OnManualChanged)));
Обратный вызов свойства зависимости:
private static void OnManualChanged(DependencyObject sender, DependencyPropertyChangedEventArgs args) {
SwitchBox box = sender as SwitchBox;
if (box.btManual.IsChecked == true) {
// never true, why??
}
}