为建立中文知识库加块砖 ——中科大胡不归
0. 前言
终于用上了 RadioButton 了。
学习WPF: 第7个月。
1. View代码
<RadioButton IsChecked="{Binding LedSwitch,Mode=TwoWay,Converter={StaticResource RadioToBoolConverter},ConverterParameter=0}">打开</RadioButton> <RadioButton IsChecked="{Binding LedSwitch,Mode=TwoWay,Converter={StaticResource RadioToBoolConverter},ConverterParameter=1}">关闭 </RadioButton>
2. Converter代码
public class Radio2BoolConverter : IValueConverter public object Convert(object value, Type targetType, object parameter, CultureInfo culture) return value != null && (value.ToString()?.Equals(parameter) ?? false); public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) return value != null && value.Equals(true) ? parameter : Binding.DoNothing;
在 Convert 中,检查 value 的值是否和 parameter 的值一致,如果一致即为选中项,返回 true。界面上的效果即为选中。
在 ConvertBack 中,判断value的值为true的时候,会直接返回 parameter 的值,否则什么也不做Binding.DoNothing。
3. VM代码
private int _ledSwitch = 1; public int LedSwitch get => _ledSwitch; _ledSwitch = value; RaisePropertyChanged(nameof(LedSwitch));
4. 效果