Я использую WPF (С#).
<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)?
DataGridTextColumns не лежит в том же дереве Visual, что и в DataGrid, поэтому простая привязка к ElementName
не будет работать здесь.
Если вы используете WPF 4.0 или более позднюю версию, вы можете использовать x: ссылку для привязки с помощью радиокнопок:
<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
.