Contents

WPF中的radiobox通过data binding绑定到一个bool属性后,如下所示,尽管UI可以正确的显示,但是data binding的属性不能正确的更新。比如user点了No之后属性UserChoice还是True。

1
2
<RadioButton Content="Yes" IsChecked="{Binding UserChoice}"/>
<RadioButton Content="No" />

需要用如下的方式:

1
2
<RadioButton Content="Yes" IsChecked="{Binding UserChoice}"/>
<RadioButton Content="No" IsChecked="{Binding UserChoice, Converter={StaticResource radioConverter}}"/>

radioConverter如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class RadioButtonConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
return !(bool)value;
}
return value;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is bool)
{
return !(bool)value;
}
return value;
}
}

这样就能正确更新了。

Contents