2016-10-11 3 views
0

관찰 가능한 컬렉션이 AllNodesAndEntries 인 ViewModel이 있습니다. 각 항목에는 부울 속성 IsEnabled이 있습니다. 이제 TreeView에 항목을 표시하고 각 TreeViewItem의 IsEnabled 속성을 ViewModel의 기본 항목 인 IsEnabled 속성에 바인딩하려고합니다. 어떻게하면됩니까?TreeViewItem.IsEnabled를 각 TreeViewItem의 ViewModel 속성에 바인딩합니다.

내 TreeView입니다. 두 가지 유형의 항목 (NodeEntry)이 있으므로 하나의 계층 적 데이터 템플릿과 하나의 일반 데이터 템플릿이 있습니다.

<TreeView ItemsSource="{Binding AllNodesAndEntries}"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:Node}"> 
       <TextBlock Text="{Binding Name}"/> 
      </HierarchicalDataTemplate> 
      <DataTemplate DataType="{x:Type local:Entry}"> 
       <TextBlock Text="{Binding Name}""/> 
      </DataTemplate> 
     </TreeView.Resources> 
     <TreeView.ItemContainerStyle> 
      <Style TargetType="{x:Type TreeViewItem}"> 
       <!-- How do I bind to TreeViewItem.IsEnabled to IsEnabled? --> 
      </Style> 
     </TreeView.ItemContainerStyle> 
    </TreeView> 

이 난 단지 setter를 정의 할 수 있기 때문에 내가 TreeView.ItemContainerStyle 내부에 그것을 할 수 없어 보인다. 그러나 setter는 값 바인딩을 허용하지 않습니다 ...

+0

setters는 값 바인딩을 허용합니까 ... 바인딩을 작성하는 방법은 무엇입니까? – ASh

+0

좋아요, 허용 된 구문은 타이핑하는 동안 팝업되는 것일뿐입니다. 그리고 'Value = ""를 입력하면 True와 False 만 나타납니다. 수업은 배웠습니다, 고마워요! – Kjara

답변

1

setEter를 사용하여 "IsEnabled"속성을 각 TreeViewItem의 "IsEnabled"항목 속성에 바인딩합니다.

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/> 
    </Style> 
</TreeView.ItemContainerStyle> 
관련 문제