6

ブール値をラジオボタンにバインドする方法に関する多くの投稿を見ました。しかし、私のシナリオでは、それをラジオ ボタンにバインドし、ユーザーからの選択を読み取る必要があります。

つまり、オプションを最初に選択する必要はありません。

ブール値にバインドすると、ブール値はnullにできないため、ラジオボタンで選択されたデフォルト値が表示されます。

null 許容ブール値を使用する場合、コンバーターを使用しようとすると、デフォルトで false になります。

境界変数を使用してラジオボタンの選択が行われたかどうかを確認する必要があるため、xaml で一方向モードを使用できません。

これを達成する方法についてのAntのポインタは?

4

2 に答える 2

10

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 番目のボタンがチェックされることを示しますfalseAnswer次に、ユーザーが続行できるようにする前に、それが null でないことを確認できます。

于 2013-08-26T19:20:44.897 に答える
0

これは最善の方法ではないかもしれませんが、これに似たものを使用できます: radiobutton wpf c# のようなチェックボックス で、2 つのコントロールだけがあります。

私はそれが最高ではないことを感謝しますが、あなたの答えを読むと、あなたが望むものを得ることができます(一般的に)。

于 2013-08-26T18:59:20.667 に答える