IValueConverter を使用して null をブール値に変換するにはどうすればよいですか?
wpf を使用して、多数のブール値を (チェックボックスで) 表示しようとしています。新しいレコードが作成されると、これらの値は null になり、チェックボックスに「不確定」として表示されます。null が表示され、「false」値として保存されるようにします。
データベースから null 値を取得して false として表示し、ユーザーが保存を押したときに false として保存する NullToBoolean コンバーターを作成しようとしました。(基本的に、ユーザーがチェックボックスを2回クリックする必要がないようにしています(1回はtrueにし、次にもう一度falseにする)。これはインポートで機能するようです-つまり、null値はfalseとして表示されます-ただし、 2 クリック ダンスを実行すると、保存時にデータベースの値が変更されません。
私のコンバーター:
[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;
}
}
コンバーターを動作させようとしているチェックボックスの1つ:
<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
ConvertBack を使用して Convert ですべてのs とスイッチ コードを試しましたが、何も機能しないようです。
誰かがこれを修正するために何をする必要があるかを指摘できますか?