简体   繁体   中英

How to binding RadioButton with DataGridTextColumn?

I use 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>            

Please tell me, how to binding IsChecked (RadioButton) with IsReadOnly (DataGridTextColumn)?

DataGridTextColumns doesn't lie in same Visual tree as that of DataGrid so simple binding with ElementName won't work here.

In case you are using WPF 4.0 or higher you can use x:Reference to bind with radio buttons like this:

<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>

Set x:Name on radio buttons and bind with it using x:Reference .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM