[英]In C# can I change a IValueConverter for 2 values and a NULL?
目前,我在表单上有2个用于“男性”和“女性”的单选按钮。 这些绑定到我的数据库中,IsMale是男性的1或女性的0。
然后,我使用NegativeBooleanConverter在两者之间切换。 我的xaml看起来像这样:
<RadioButton Content="Male" Name="rbMale" IsChecked="{Binding Person.IsMale, Mode=TwoWay}" />
<RadioButton Content="Female" Name="rbFelmale" IsChecked="{Binding Person.IsMale, Converter={StaticResource NegativeBooleanConverter}}" />
我的NegativeBooleanConverter如下所示:
public class NegativeBooleanConverter : IValueConverter
{
public object Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture)
{
return !(bool)value;
}
}
这一切都很好,没有问题!!
我现在将更多数据上载到IsMale为NULL的数据库中,因为目前尚不知道。
我的问题是是否可以更改转换器,以便如果该值为NULL都没有选择单选按钮? 如果不是,实现我追求的最好方法是什么?
我认为这是您要放入NegativeBooleanConverter
的Convert
函数:(也是类似的ConvertBack
函数)
var b = value as bool?;
if (b.HasValue)
return !b.Value;
else
return false;
如果false
太具体,则可以将参数设为“默认”值,而不是返回该值。
如果Male按钮上的IsChecked
为null引起问题,则可以使另一个转换器return ((bool?)value).GetValueOrDefault();
。
ConvertBack
可能是一个问题,因为您实际上是将“男性”和“未知”合并为“未检查”。 只要调用它并将状态保存回IsMale
并不太过分,您就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.