我有一个绑定到对象列表的数据网格。该对象的一个属性称为“NoOutput”,如果已设置,我想要禁用数据网格中同一行中的某些其他列(本例中为“值”),因此用户无法编辑这些值,如只要设置'NoOutput'。
<DataGrid SelectionUnit="FullRow" CanUserAddRows="False" CanUserDeleteRows="False" ItemsSource="{Binding Path=OutputList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="2*" IsReadOnly="True" Binding="{Binding NameID}" />
<DataGridTextColumn Header="Description" Width="4*" Binding="{Binding TemplateDescription}" />
<DataGridCheckBoxColumn Header="NoOutput" Width="*" Binding="{Binding NoOutput}" />
<DataGridTextColumn Header="Value" Width="*" Binding="{Binding Value}" IsReadOnly="{Binding NoOutput, Converter={StaticResource Invert}}" />
</DataGrid.Columns>
</DataGrid>
问题是,IsReadyOnly属性的绑定似乎不会绑定到同一个源,就像DataGridTextColumn的Binding属性一样。
System.Windows.Data错误:2:找不到目标元素的管理FrameworkElement或FrameworkContentElement。 BindingExpression:路径= NoOutput;的DataItem = NULL; target元素是'DataGridTextColumn'(HashCode = 45236668); target属性为'IsReadOnly'(类型'Boolean')
看起来IsReadOnly绑定只能看到DataGrid的datacontext,而不能看到DataGridColumn的datacontext。我尝试用相对来源绑定,但这也不起作用。我也尝试绑定SelectedItem的内容,但我也无法使其工作。是否可以绑定另一列的值,但是数据网格的同一行?
(一切正常,但IsReadOnly绑定除外)