我有一个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}" >...
这很好。
答案 0 :(得分:1)
听起来很奇怪,DataGridColumn
类直接从DependencyObject
继承,所以你不能在其属性上使用绑定(它没有SetBinding
方法)。
无法弄清楚原因。