代码之家  ›  专栏  ›  技术社区  ›  Olga

如何将RadioButton与DataGridTextColumn绑定?

  •  1
  • Olga  · 技术社区  · 10 年前

    我使用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(已检查) (单选按钮)与 IsReadOnly(只读) (DataGridTextColumn)?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Rohit Vats    10 年前

    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 .