如何绑定单选按钮与DataGridTextColumn

本文关键字:单选按钮 DataGridTextColumn 绑定 何绑定 | 更新日期: 2023-09-27 18:14:20

我用的是WPF (c#)。

<DataGrid>
  <DataGrid.Columns>
    <DataGridTextColumn Header="Col1" IsReadOnly="{Binding}" >
    </DataGridTextColumn>
    <DataGridTextColumn Header="Col2" IsReadOnly="{Binding}" >
    </DataGridTextColumn>
  </DataGrid.Columns>
</DataGrid>               
<GroupBox>
  <StackPanel>
      <RadioButton IsChecked="{Binding}" Content="Col1 IsReadOnlyFalse, Col2 IsReadOnlyTrue"/>
      <RadioButton IsChecked="{Binding}" Content="Col1 IsReadOnlyTrue, Col2 IsReadOnlyFalse"/>
  </StackPanel>                                               
</GroupBox>            

请告诉我,如何绑定IsChecked(RadioButton)与IsReadOnly(DataGridTextColumn)?

如何绑定单选按钮与DataGridTextColumn

DataGridTextColumns不位于与DataGrid 相同的可视化树中,因此与 ElementName 的简单绑定在这里不起作用。

如果您使用的是WPF 4.0或更高版本,您可以使用x:Reference来绑定单选按钮,如下所示:

<DataGrid ItemsSource="{Binding GroupsCollection}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Col1"
                            IsReadOnly="{Binding IsChecked,
                                         Source={x:Reference DisableColumn1}}" >
        </DataGridTextColumn>
        <DataGridTextColumn Header="Col2"
                            IsReadOnly="{Binding IsChecked,
                                         Source={x:Reference DisableColumn2}}" >
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>
<GroupBox>
    <StackPanel>
        <RadioButton x:Name="DisableColumn2"
                     Content="Col1 IsReadOnlyFalse, Col2 IsReadOnlyTrue"/>
        <RadioButton x:Name="DisableColumn1"
                     Content="Col1 IsReadOnlyTrue, Col2 IsReadOnlyFalse"/>
    </StackPanel>
</GroupBox>

在单选按钮上设置 x:Name 并使用 x:Reference 与之绑定。