1

WPF DataGridを取得し、DataGridで、(ViewModelからの)DataGridコンテキストの外部のプロパティに依存して列を表示したいと考えています。

一部のラベル(「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の外部にある別のVisibilityプロパティにバインドされた同じプロパティを取得しましたが

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

これは正常に機能します。

4

1 に答える 1

1

奇妙に聞こえるかもしれませんが、DataGridColumnクラスはから直接継承するDependencyObjectため、そのプロパティでバインディングを使用することはできません(SetBindingメソッドはありません)。

理由がわかりません。

于 2013-01-10T15:54:48.197 に答える