C# 从代码中控制RadioButton DataGridTemplateColumn
我有一个datagrid,它包含3个DataGridTemplateColumns,其中包含单选按钮。 现在,我想通过我的代码隐藏中按钮的单击事件来控制radioButtons的“isEnabled”属性:C# 从代码中控制RadioButton DataGridTemplateColumn,c#,wpf,wpfdatagrid,C#,Wpf,Wpfdatagrid,我有一个datagrid,它包含3个DataGridTemplateColumns,其中包含单选按钮。 现在,我想通过我的代码隐藏中按钮的单击事件来控制radioButtons的“isEnabled”属性: <DataGrid AutoGenerateColumns="False" Height="300" x:Name="dgEmps" RowEditEnding="gridEmps_RowEditEnding" CellEditEnding="grid
<DataGrid AutoGenerateColumns="False" Height="300" x:Name="dgEmps"
RowEditEnding="gridEmps_RowEditEnding" CellEditEnding="gridEmps_CellEditEnding"
FlowDirection="RightToLeft"
SelectionChanged="gridEmps_SelectionChanged">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Shift Manager">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding EmployeeId}"
IsChecked="{Binding IsManager, Mode=TwoWay}" x:Name="dgrIsManager"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Waiter" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding EmployeeId}"
IsChecked="{Binding IsWaiter, Mode=TwoWay}" x:Name="dgrIsWaiter"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Cook" IsReadOnly="True" x:Name="aaa">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton GroupName="{Binding EmployeeId}"
IsChecked="{Binding IsCook, Mode=TwoWay}" x:Name="dgrIsCook"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
问题是“IsReadOnly”属性不起作用,我似乎无法从代码中访问radioButton属性(甚至不能通过我在xaml中声明的x:name)。
我试过这个:
和许多其他教程/博客文章,但无法使其工作。
有什么想法吗?要确保readiobutton是只读的,请设置IsitTestVisible
<DataGridTemplateColumn ...>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton ....IsHitTestVisible="False"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
要确保readiobutton是只读的,请设置IshitteVisible
<DataGridTemplateColumn ...>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RadioButton ....IsHitTestVisible="False"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
无法通过x:Name访问RadioButton,因为它是在DataTemplate中定义的,而不是在主内容树中定义的 而是像这样定义DataTemplateColumns(基于上一列):
然后从代码隐藏将aaa.IsReadOnly设置为true或false。此更改应传播到属于此DataGridColumn的每个DataGridCell,然后该DataGridCell将由于绑定而更改RadioButton.IsEnabled
XAML代码段使用BooleanAntiviteConverter,它只是一个反转布尔值的转换器。您不能通过x:Name访问RadioButton,因为它是在DataTemplate中定义的,而不是在主内容树中定义的 而是像这样定义DataTemplateColumns(基于上一列):
然后从代码隐藏将aaa.IsReadOnly设置为true或false。此更改应传播到属于此DataGridColumn的每个DataGridCell,然后该DataGridCell将由于绑定而更改RadioButton.IsEnabled
XAML代码段使用BooleanAntiviteConverter,它只是一个反转布尔值的转换器