2013-01-10 1 views
1

WPF DataGrid가 있고 DataGrid에서 ViewModel의 DataGrid Context 외부에있는 속성에 따라 열을 표시하려고합니다.DataGrid에서 DataContext로 WPF 바인딩

"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 속성에 전혀 영향을 미치지 않습니다. 나는 왜 그리고 어떻게 계속 해야할지 모른다.

UPDATE

내 출력 창에 다음 오류 보여줍니다

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') 

UPDATE 2

내가 DataGrid에

외부의 다른 가시성 속성에 같은 속성 바인더 제본을 가지고 있지만
<DockPanel Visibility="{Binding CharacteristicMeasure.Characteristic.CharacteristicType.IsBool,Converter={StaticResource boolToInv}, ConverterParameter=true}" >... 

및이 잘 작동합니다.

+0

디버거를 연결하고 변환기의 ConvertTo 메서드에 중단 점을 넣습니다. 그러면 속성이 올바르게 연결되어 있고 변환기에서 Visibility enum으로 변환하고 있는지 확인해야합니다. – Gishu

+0

변환기가 실행되지 않습니다. 다음과 같은 결과가 나타납니다. System.Windows.Data 오류 : 2 : 대상 요소에 대한 FrameworkElement 또는 FrameworkContentElement를 찾을 수 없습니다. BindingExpression : Path = DataContext.CharacteristicMeasure.Characteristic.CharacteristicType.IsBool; DataItem = null; 대상 요소는 'DataGridTemplateColumn'(HashCode = 15721293)입니다. 대상 속성이 '가시성'(유형 '가시성') – JuHwon

+0

Doh! 다시 물린 - DataGridColumn은 시각적 요소가 아닙니다. 가능한 복제 [WPF DataGrid의 Visible 속성 DataGridCOlumn에 바인딩] (http://stackoverflow.com/questions/669060/binding-to-visible-property-datagridcolumn-in-wpf-datagrid) – Gishu

답변

1

이상한 것처럼 DataGridColumn 클래스는 DependencyObject에서 직접 상속되므로 속성에 바인딩을 사용할 수 없습니다 (SetBinding 메서드가 없음).

이유를 알아낼 수 없습니다.

+0

감사합니다. 이제 나는 문제를 이해하고 이미 고칠 수 있습니다. 속성을 TextBox에 바인딩하고이 변환기의 역변환 된 버전으로 다른 TextBox를 표시했습니다. 감사 – JuHwon