数据网格中的多个单选按钮选择
multiple radiobuttons selection in datagrid
我有一个包含四列(一列有标签,三列是单选按钮类型)和多行的数据网格。我必须确保用户必须在每一行中 select 一个单选按钮。
单选按钮的列定义是这样的
<telerik:GridViewColumn Header="Different" HeaderTextAlignment="Center" UniqueName="diff" Width="100">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadRadioButton Name="rdbtnDiff" GroupName="DiffTariff" Width="15" Height="15"/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
如果我为所有单选按钮类型列提供相同的 GroupName,它允许我在整个网格中仅 select 一个单选按钮。当我为所有三列提供不同的 GroupName 时,它允许我在整列中仅 select 一个单选按钮。但我想要它排成一行。
我完全卡住了。任何形式的帮助将不胜感激。
这是我测试过并按要求工作的代码。
<Grid>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="150" ></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0" Grid.Row="0">
<RadioButton GroupName="row1group">Btn1</RadioButton>
<RadioButton GroupName="row1group">Btn2</RadioButton>
<RadioButton GroupName="row1group">Btn3</RadioButton>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0" Grid.Row="1" >
<RadioButton GroupName="row2group">Btn1</RadioButton>
<RadioButton GroupName="row2group">Btn2</RadioButton>
<RadioButton GroupName="row2group">Btn3</RadioButton>
</StackPanel>
</Grid>
需要注意的主要事情是,我们应该有一个 属性 在整个集合中保持唯一。如果我们有这样的 属性 只需将其与组名绑定,单选按钮就可以正常工作。它可以是 index 属性 或任何其他。
所以我通过给每一行一个唯一的组名解决了这个问题。
这里是示例代码;
<dg:DataGridTemplateColumn Header="Male">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding Index}" IsChecked="{Binding Male}" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
<dg:DataGridTemplateColumn Header="Female">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding Index}" IsChecked="{Binding Female}" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
我有一个包含四列(一列有标签,三列是单选按钮类型)和多行的数据网格。我必须确保用户必须在每一行中 select 一个单选按钮。
单选按钮的列定义是这样的
<telerik:GridViewColumn Header="Different" HeaderTextAlignment="Center" UniqueName="diff" Width="100">
<telerik:GridViewColumn.CellTemplate>
<DataTemplate>
<telerik:RadRadioButton Name="rdbtnDiff" GroupName="DiffTariff" Width="15" Height="15"/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>
如果我为所有单选按钮类型列提供相同的 GroupName,它允许我在整个网格中仅 select 一个单选按钮。当我为所有三列提供不同的 GroupName 时,它允许我在整列中仅 select 一个单选按钮。但我想要它排成一行。
我完全卡住了。任何形式的帮助将不胜感激。
这是我测试过并按要求工作的代码。
<Grid>
<Grid.ColumnDefinitions>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="150" ></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="0" Grid.Row="0">
<RadioButton GroupName="row1group">Btn1</RadioButton>
<RadioButton GroupName="row1group">Btn2</RadioButton>
<RadioButton GroupName="row1group">Btn3</RadioButton>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0" Grid.Row="1" >
<RadioButton GroupName="row2group">Btn1</RadioButton>
<RadioButton GroupName="row2group">Btn2</RadioButton>
<RadioButton GroupName="row2group">Btn3</RadioButton>
</StackPanel>
</Grid>
需要注意的主要事情是,我们应该有一个 属性 在整个集合中保持唯一。如果我们有这样的 属性 只需将其与组名绑定,单选按钮就可以正常工作。它可以是 index 属性 或任何其他。
所以我通过给每一行一个唯一的组名解决了这个问题。
这里是示例代码;
<dg:DataGridTemplateColumn Header="Male">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding Index}" IsChecked="{Binding Male}" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
<dg:DataGridTemplateColumn Header="Female">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding Index}" IsChecked="{Binding Female}" />
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>