WPF与DataGrid中的DataContext绑定

时间:2013-01-10 15:31:16

标签: wpf binding datagrid datacontext

我有一个WPF DataGrid,在DataGrid中我希望显示一个列,该列依赖于DataGrid Context之外的属性(来自ViewModel)。

对于某些标签,我在DataGrid之外有相同的Property绑定(没有“DataContext。”),这样可以正常工作。

<DataGrid ItemsSource="{Binding Items.View}" AutoGenerateColumns="False"   x:Name="Overview" >

<DataGridTemplateColumn Header="{lex:Loc Value}" Width="Auto" Visibility="{Binding ElementName=Overview, Path=DataContext.CharacteristicMeasure.Characteristic.CharacteristicType.IsBool,Converter={StaticResource boolToInv}, ConverterParameter=true}" >
  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
          <TextBlock Text="{Binding Value}" />
      </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
  <DataGridTemplateColumn.CellEditingTemplate>
      <DataTemplate>
          <TextBox Text="{Binding Value}"  />
      </DataTemplate>
  </DataGridTemplateColumn.CellEditingTemplate>
  </DataGridTemplateColumn>
</DataGridTemplateColumn>

根本不会影响DataGridTemplateColumn的Visibility属性。我不知道为什么以及如何继续。

更新

我的输出窗口显示以下错误:

    System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=DataContext.CharacteristicMeasure.Characteristic.CharacteristicType.IsBool; DataItem=null; target element is 'DataGridTemplateColumn' (HashCode=15721293); target property is 'Visibility' (type 'Visibility')

更新2

虽然我在DataGrid之外的另一个可见性属性上获得了相同的属性绑定

    <DockPanel Visibility="{Binding CharacteristicMeasure.Characteristic.CharacteristicType.IsBool,Converter={StaticResource boolToInv}, ConverterParameter=true}" >...

这很好。

1 个答案:

答案 0 :(得分:1)

听起来很奇怪,DataGridColumn类直接从DependencyObject继承,所以你不能在其属性上使用绑定(它没有SetBinding方法)。

无法弄清楚原因。