Как связать 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,

Другие вопросы по тегам