2016-07-22 1 views
0

Я использую .NET Framework 4.5 и наблюдаю странное поведение, когда я использую несколько элементов управления RadioButton в сетке. Я ожидал бы, что вы сможете выбрать и отменить выбор каждого RadioButton отдельно, так как я не использовал свойство GroupName, чтобы связать RadioButtons вместе. Тем не менее, я могу выбрать только один RadioButton за раз. Как я могу подавить это поведение? Вот минимальный пример:WPF Radio Button Показать неправильное поведение привязки группы

<Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 

     <RadioButton Grid.Row="0" Grid.Column="0" ></RadioButton> 
     <RadioButton Grid.Row="1" Grid.Column="0" ></RadioButton> 
     <RadioButton Grid.Row="2" Grid.Column="0" ></RadioButton> 
    </Grid> 

ответ

3

Технически это ожидаемое поведение, но не так, как вы думаете. GroupName - это свойство, которое ожидает всего лишь string и фактически по умолчанию равно string.Empty или "". Фактически значение для группы - это всего лишь пустая строка, и WPF обрабатывает их как часть одной и той же группировки. От Microsoft:

Имя группы, к которой принадлежит радиокнопка. По умолчанию пустая строка ("").

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.radiobutton.groupname(v=vs.110).aspx

P.S. Не были бы ли эти флажки более подходящими для такого типа ситуаций?

+0

Кроме того, я бы сказал, в основном сетка - это своего рода группа, не так ли? – lokusking

+0

Сетка не является тем, что на самом деле группирует радиообъективы. Дело в том, что значение GroupName по умолчанию все равно. Когда вы назначаете другое значение для любого из них, они разделяются на разные группы. Это все потому, что по умолчанию используется пустая строка вместо нулевого значения. – BolletuH

+0

У меня есть мой первый знак сэр! – lokusking