如何将RadioButton与DataGridTextColumn绑定?

时间:2014-07-22 08:53:48

标签: c# wpf binding radio-button ischecked

我使用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)?

1 个答案:

答案 0 :(得分:3)

DataGridTextColumns与DataGrid 不在同一个Visual树中,因此与 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 与其绑定。