我使用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)?
答案 0 :(得分:3)
DataGridTextColumns与DataGrid 不在同一个Visual树中,因此与 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
与其绑定。