Как использовать IValueConverter для преобразования нулей в булев?Null To Boolean IValueConverter не работает
Я использую wpf, чтобы попытаться отобразить кучу булевых значений (в клетках). Когда создается новая запись, эти значения являются нулевыми и отображаются как «неопределенные» в полях. Я хочу, чтобы нули отображались и сохранялись как «ложные» значения.
Я попытался создать конвертер NullToBoolean, который принимает нулевые значения из базы данных и отображает их как false, , а затем сохраняет их как ложные, когда пользователь нажимает save. (По сути, я стараюсь, чтобы пользователь не дважды щелкнул флажками (один раз, чтобы сделать его истинным, а затем сделать его ложным). Это, похоже, работает на импорт, то есть нулевые значения отображаются как ложные, но если Я делаю два щелчок потанцевать значение не изменяется в базе данных при сохранении
Мой конвертер:.
[ValueConversion(typeof(bool), typeof(bool))]
public class NullBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return value;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
return value;
}
return null;
}
}
Один из флажков я пытаюсь иметь конвертер работать с:
<CheckBox Grid.Column="1" Grid.Row="0" Padding="5" Margin="5" VerticalAlignment="Center" Name="chkVarianceDescriptionProvided" IsThreeState="False">
<CheckBox.IsChecked>
<Binding Path="VarianceDescriptionProvided" Mode="TwoWay">
<Binding.Converter>
<utils:NullBooleanConverter />
</Binding.Converter>
</Binding>
</CheckBox.IsChecked>
</CheckBox>
Я не знаю, является ли проблема, потому что мой код неправильный или если это случай конвертера, думая, что ничего не изменилось, поэтому ему не нужно ConvertBack
. Я пробовал все Mode
s и переключил код в Convert с ConvertBack, но ничего не работает.
Может кто-нибудь указать, что мне нужно сделать, чтобы исправить это?
Человек, который выглядит уродливым. Вы преобразовываете Null в false и not-null в true? Потому что ты этого не делаешь. и при обратном обращении вы конвертируете bool (который никогда не будет null) обратно в bool. –
Вы проверили, ударил ли ваш код конвертера? –
Кстати, «Когда создается новая запись, эти значения равны нулю ...«Проблема заключается в том, что вы должны делать« View Friendly »ViewModels/DataModels. –