Как связать RadioButton с DataGridTextColumn?
Я использую 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 ответ
Решение
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
,