null可のブール値をラジオボタンにバインドすることはできますが、コンバーターを使用して行う必要があります。
まず、あなたの変数を宣言:
private bool? answer;
public bool? Answer
{
get { return answer; }
set
{
answer = value;
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Answer"));
}
}
とnull
にそれを初期化します。
はその後XAMLで:
<Window.Resources>
<local:BooleanConverter x:Key="BooleanConverter"/>
</Window.Resources>
<StackPanel Grid.Row="1">
<RadioButton Content="I Agree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='true', Mode=TwoWay}" />
<RadioButton Content="I Disagree"
IsChecked="{Binding Answer,
Converter={StaticResource BooleanConverter},
ConverterParameter='false', Mode=TwoWay}" />
</StackPanel>
そして最後に、あなたのコンバータ:
class BooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var test = (bool?)value;
var result = bool.Parse((string)parameter);
if (test == result)
{
return true;
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var result = bool.Parse((string)parameter);
return result;
}
}
これはAnswer
にあるラジオボタンを結合し、値があるとき、最初の1のみがチェックされると述べてtrue
2番目の回答は答えがfalse
のときにチェックされます。その後、ユーザに進む前にAnswer
がヌルでないことを確認することができます。
ラジオボタンにバインドしたいのはなぜですか?チェックボックスは良くないでしょうか? – ChrisF
私はチェックボックスを考えたが、それは私に同じprobを与えるだろうか? selectedvalueはブール値にバインドされており、コンバーターには同じ問題がありますか? –
いいえブール値が偽の場合、チェックボックスは空です。真の場合はチェックされます。また、それをヌル可能なブール値にバインドして、それをチェックボックスの3番目の不確定な状態にすることもできます。ここで何を達成しようとしていますか?このブール値は何を表していますか? – ChrisF