在wpf中的datagrid中禁用多重选择

时间:2016-06-22 04:55:33

标签: c# wpf datagrid

我在wpf工作,我正在使用数据网格下方:

<DataGrid Name="dgUseCaseList" AutoGenerateColumns="False" Grid.Row="0" CanUserAddRows="False" VirtualizingStackPanel.IsVirtualizing="False" Height="620" VerticalAlignment="Top" SelectionMode="Single" >
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Width="30">
                                <DataGridTemplateColumn.Header>
                                    <CheckBox Name="chkSelectAllUseCases" Click="chkSelectAllUseCases_Click" IsHitTestVisible="False"/>
                                </DataGridTemplateColumn.Header>
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <CheckBox Name="chkSelectUseCase" IsChecked="{Binding Path=IsSelected,Mode=TwoWay}" Click="chkSelectUseCase_Click"/>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>

                            <DataGridTextColumn Width="100" Header="UseCaseId"   Binding="{Binding Path=UseCaseId}">
                                <DataGridTextColumn.CellStyle>
                                    <Style TargetType="DataGridCell">
                                        <Setter Property="ToolTip" Value="{Binding UseCaseDescription}" />
                                    </Style>
                                </DataGridTextColumn.CellStyle>
                            </DataGridTextColumn>
                        </DataGrid.Columns>
                    </DataGrid>

但我仍然可以选择多个复选框。如何禁用它。 (我想只选择一个复选框。在选择下一个复选框时,前一个复选框应该取消选中)

1 个答案:

答案 0 :(得分:0)

尝试使用RadioButton而不是CheckBox。

<DataGridTemplateColumn.CellTemplate> <DataTemplate> <RadioButton GroupName="group1" Name="chkSelectUseCase" IsChecked="{Binding Path=IsSelected,Mode=TwoWay}" Click="chkSelectUseCase_Click"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate>

如果需要,您可以自定义RadioButton的模板。

<Style TargetType="{x:Type RadioButton}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type RadioButton}"> <Grid> <CheckBox IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsChecked, Mode=TwoWay}" IsHitTestVisible="False" Content="{TemplateBinding Content}" /> <CheckBox IsChecked="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsChecked, Mode=TwoWay}"
Content="{TemplateBinding Content}" Opacity="0"/> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style>