C# 在数据网格中同步单选按钮选择和行选择
我的数据网格中有一个RadioButtonTemplate列。单击单选按钮时,会选择相应的行,但单击该行时,不会选择相应的单选按钮。这会使系统处于“混乱”状态,因为单选按钮和行选择不同步。请问如何同步它们?我已经审阅了类似的回复,但它没有解决问题,也没有解决我的问题 以下是我编写的代码:C# 在数据网格中同步单选按钮选择和行选择,c#,wpf,datagrid,radio-button,datagridtemplatecolumn,C#,Wpf,Datagrid,Radio Button,Datagridtemplatecolumn,我的数据网格中有一个RadioButtonTemplate列。单击单选按钮时,会选择相应的行,但单击该行时,不会选择相应的单选按钮。这会使系统处于“混乱”状态,因为单选按钮和行选择不同步。请问如何同步它们?我已经审阅了类似的回复,但它没有解决问题,也没有解决我的问题 以下是我编写的代码: <DataGrid.Columns> <DataGridTemplateColumn> &
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="Select" IsChecked="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="Auto" Header="First Name" Binding="{Binding FirstName}"/>
<DataGridTextColumn Width="Auto" Header="Last Name" Binding="{Binding LastName}"/>
</DataGrid.Columns>
</DataGrid>
问题是您的绑定无效。如果在VisualStudio中使用类似于或live visual tree的工具,您将看到绑定无法工作 原因是您的
单选按钮
位于一个模板内,该模板具有网格绑定到的数据的数据上下文,而不是DataGridRow
。如果像这样更新绑定,它将工作:
IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
本质上,我告诉绑定查找视觉树中较高位置的IsSelected
,相对于DataGridRow
另一个问题是,由于您使用的是单选按钮
,因此在单击该按钮时无法取消选择。如果你想让它像一个开关,你应该使用一个复选框
我希望这能有所帮助。问题是您的绑定无效。如果在VisualStudio中使用类似于或live visual tree的工具,您将看到绑定无法工作
原因是您的单选按钮
位于一个模板内,该模板具有网格绑定到的数据的数据上下文,而不是DataGridRow
。如果像这样更新绑定,它将工作:
IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}, Path=IsSelected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
本质上,我告诉绑定查找视觉树中较高位置的IsSelected
,相对于DataGridRow
另一个问题是,由于您使用的是单选按钮
,因此在单击该按钮时无法取消选择。如果你想让它像一个开关,你应该使用一个复选框
我希望这有帮助