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
、値が の場合にのみ最初のボタンtrue
がチェックされ、答えが の場合に 2 番目のボタンがチェックされることを示しますfalse
。Answer
次に、ユーザーが続行できるようにする前に、それが null でないことを確認できます。