Member 14169626 Ответов: 1

Как проверить две радиокнопки только в одно и то же время в C#?


<StackPanel Orientation="Horizontal">
<RadioButton Visibility="{Binding RadioButton1}" IsChecked="{Binding Button1,Mode=TwoWay}"/>
 </StackPanel>
 <StackPanel Orientation="Horizontal">
<RadioButton Visibility="{Binding RadioButton2}" IsChecked="{Binding Button2,Mode=TwoWay}"/>
 </StackPanel>



Я хочу, чтобы RadioButton1 проверил ==> RadioButton2 является ложным или
Проверка RadioButton2 ==> RadioButton1 является ложной.


Но этот код не выполняется. RadioButton1 и RadioButton2 одновременно проверяют.Я использую convert.cs, но не запускаю его.
Как два переключателя не будут проверяться одновременно.

Что я уже пробовал:

private bool reserveRadioButton1;

public bool ReserveRadioButton1
{
    get{ return reserveRadioButton1; }
    set{  reserveRadioButton1 =value;

      if(reserveRadioButton1)
     {
         ReserveRadioButton2=false;
     }

}

private bool reserveRadioButton2;

public bool ReserveRadioButton2
{
    get{ return reserveRadioButton2; }
    set{  reserveRadioButton2 =value;

      if(reserveRadioButton2)
     {
         ReserveRadioButton1=false;
     }

}

1 Ответов

Рейтинг:
1

CHill60

Потенциально здесь есть две проблемы

1. RadioButton1 и RadioButton2 находятся в разных контейнерах - существует концепция "группировки" переключателей внутри контейнера - только по одному переключателю за раз внутри этой группы это можно проверить. Это позволяет использовать различные группы переключателей на одной странице, например.

<StackPanel Orientation="Horizontal">
<RadioButton GroupName="G1" Visibility="{Binding RadioButton1}" IsChecked="{Binding Button1,Mode=TwoWay}"/>
<RadioButton GroupName="G1" Visibility="{Binding RadioButton2}" IsChecked="{Binding Button2,Mode=TwoWay}"/>
<RadioButton GroupName="G2" Visibility="{Binding RadioButton3}" IsChecked="{Binding Button3,Mode=TwoWay}"/>
<RadioButton GroupName="G2" Visibility="{Binding RadioButton4}" IsChecked="{Binding Button4,Mode=TwoWay}"/>
</StackPanel>
В этом примере любой Радиобуттон 1 или 2 можно проверить (потому что они находятся в группе G1) также как любой Radiobutton 3 или 4 (потому что они оба находятся в группе G2)

2. Еще одна проблема, которая может повлиять на вас, заключается в том, что вы используете привязку к логическому значению IsChecked. Еще в 2010 году была известная проблема с этим (я не знаю, является ли это все еще проблемой - это также будет зависеть от того, какую версию VS вы используете - поэтому сначала попробуйте Шаг 1). Обходной путь для этой проблемы описан здесь - Учебник WPF | RadioButton[^]