我有一个 WPF DataGrid 并且在 DataGrid 中我希望显示一个依赖于 DataGrid 上下文(来自 ViewModel)之外的属性的列。
对于某些标签(没有 "DataContext." ),我在 DataGrid 之外具有相同的属性绑定,并且效果很好。
<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}" >...
这很好用。