[英]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.