2017-12-11 11 views
1

행 데이터 바인딩 유형의 부울 속성을 기반으로 확장기 토글 버튼의 ​​표시를 숨기려고합니다. 나는이와 그것은 IsEnabled 속성을 기반으로 렌더링있어 변경하도록 ToggleButton의 스타일을 구현하고, 확장기의의 IsEnabled이를 결합했다 :WPF DataGrid Expander.IsEnabled 바인딩

<Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}"> 
    <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Expander}}, Path=IsEnabled}" /> 
</Style> 

나는 다음과 같이 확장기의의 IsEnabled에 바인딩하려고 :

<DataGrid.RowHeaderTemplate> 
    <DataTemplate> 
    <Expander Expanded="Expander_Expanded" Collapsed="Expander_Collapsed" Style="{StaticResource DataGridRowHeaderExpander1}" 
       IsEnabled="{Binding IsDistributed}"> 
    </Expander> 
    </DataTemplate> 
</DataGrid.RowHeaderTemplate> 

IsEnabled를 true 또는 false로 하드 코딩하면 렌더링이 완벽하게 작동합니다. 또한 다른 모든 행 바인딩은 예상대로 작동합니다. 이 경우 나는 다음과 같은 오류를 얻을 :

System.Windows.Data Warning: 67 : BindingExpression (hash=63415529): Resolving source (last chance) 
System.Windows.Data Warning: 70 : BindingExpression (hash=63415529): Found data context element: Expander (hash=22324024) (OK) 
System.Windows.Data Warning: 78 : BindingExpression (hash=63415529): Activate with root item <null> 
System.Windows.Data Warning: 106 : BindingExpression (hash=63415529): Item at level 0 is null - no accessor 
System.Windows.Data Warning: 80 : BindingExpression (hash=63415529): TransferValue - got raw value {DependencyProperty.UnsetValue} 
System.Windows.Data Warning: 88 : BindingExpression (hash=63415529): TransferValue - using fallback/default value 'True' 
System.Windows.Data Warning: 89 : BindingExpression (hash=63415529): TransferValue - using final value 'True' 

답변

1

내가 그것을 발견, 여기있다 :

IsEnabled="{Binding Path=Item.IsDistributed, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridRow}}}" 

항목이 나타내는 바인딩 된 데이터 항목 인 DataGridRow의 속성입니다.