Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数据网格中同步单选按钮选择和行选择_C#_Wpf_Datagrid_Radio Button_Datagridtemplatecolumn - Fatal编程技术网

C# 在数据网格中同步单选按钮选择和行选择

C# 在数据网格中同步单选按钮选择和行选择,c#,wpf,datagrid,radio-button,datagridtemplatecolumn,C#,Wpf,Datagrid,Radio Button,Datagridtemplatecolumn,我的数据网格中有一个RadioButtonTemplate列。单击单选按钮时,会选择相应的行,但单击该行时,不会选择相应的单选按钮。这会使系统处于“混乱”状态,因为单选按钮和行选择不同步。请问如何同步它们?我已经审阅了类似的回复,但它没有解决问题,也没有解决我的问题 以下是我编写的代码: <DataGrid.Columns> <DataGridTemplateColumn> &

我的数据网格中有一个RadioButtonTemplate列。单击单选按钮时,会选择相应的行,但单击该行时,不会选择相应的单选按钮。这会使系统处于“混乱”状态,因为单选按钮和行选择不同步。请问如何同步它们?我已经审阅了类似的回复,但它没有解决问题,也没有解决我的问题

以下是我编写的代码:

            <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

另一个问题是,由于您使用的是
单选按钮
,因此在单击该按钮时无法取消选择。如果你想让它像一个开关,你应该使用一个
复选框

我希望这有帮助