Jak używać IValueConverter do konwertowania wartości null na wartości logiczne?Null To Boolean IValueConverter nie działa
Używam wpf, aby spróbować wyświetlić kilka wartości logicznych (w polach wyboru). Po utworzeniu nowego rekordu wartości te są puste i pojawiają się w polach wyboru jako "nieokreślone". Chcę, aby pojawiły się wartości zerowe i zapisać jako "fałszywe" wartości.
Próbowałem utworzyć konwerter NullToBoolean, który pobiera wartości puste z bazy danych i wyświetla je jako fałszywe, , a następnie zapisuje je jako fałszywe, gdy użytkownik zapisuje dane. (Zasadniczo staram się uniknąć tego, że użytkownik musi kliknąć dwa razy w polach wyboru (raz, aby uczynić go prawdziwym, a następnie ponownie, aby uczynić go fałszywym) .To wydaje się działać na import - tj. Wartości puste są pokazane jako fałszywe - ale chyba robię dwa kliknięcia tańczyć wartość nie zmienia się w bazie danych przy zapisywaniu
My Converter.
[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;
}
}
Jednym z wyboru Próbuję mieć pracę Converter z:
<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>
Nie wiem, czy problem polega na tym, że mój kod jest błędny, czy jest to przypadek Konwertera myśli, że nic się nie zmieniło, dlatego nie musi być ConvertBack
. Próbowałem wszystkich Mode
s i przełączam kod w Konwertuj za pomocą ConvertBack, ale nic nie działa.
Czy ktoś może wskazać, co muszę zrobić, aby to naprawić?
Człowiek, który wygląda brzydko. Czy konwersja wartości Null na false i not-null na true? Ponieważ tego nie robisz. i po konwersji, konwertujesz bool (który nigdy nie będzie zerowy) z powrotem do bool. –
Czy sprawdziłeś, czy twój kod konwertera uderza? –
Nawiasem mówiąc: "Po utworzeniu nowego rekordu wartości te są zerowe ..."to jest problem, napraw to. Powinieneś robić" View Friendly "ViewModels/DataModels –