簡體   English   中英

在C#中,我可以將IValueConverter更改為2個值和一個NULL嗎?

[英]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都沒有選擇單選按鈕? 如果不是,實現我追求的最好方法是什么?

我認為這是您要放入NegativeBooleanConverterConvert函數:(也是類似的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM