2010-02-23 5 views
0

바인딩 된 (ItemsSource) ViewModels의 상태에 따라 TreeView Controltemplate의 일부를 변경해야한다는 문제가 있습니다. 예를 들어 작은 확장기 아이콘은 각 항목 ViewModel 상태에 따라 다른 도면으로 교환해야합니다. 각 ViewModel의 상태에 근거 해, 아이 항목은 디폴트의 수직 방향 대신에 수평 방향으로 배치 할 필요가 있습니다.ViewModel은 어떻게 ControlTemplate을 구동 할 수 있습니까?

답변

1

ControlTemplate이 아닌 ItemsContainerStyle을 맞춤 설정해야하는 것처럼 들립니다. 당신이 적합하지 않습니다 바인딩, 당신은 스타일이나 ControlTemplate에에 Converters, Triggers를 사용할 수있는 경우

<TreeView ItemsSource="{Binding ...} 
      ...> 
<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
    <!-- IsSelected is a property on ViewModel item --> 
    <Setter Property="IsSelected" Value="{Binding IsSelected}"/> 
    <Setter .../> 
    </Style> 
</TreeView.ItemContainerStyle> 
</TreeView> 

: 당신의 ViewModel가 선택되어 기본 때마다 선택으로 TreeViewItem을 표시 할 경우 예를 들어, 다음과 같은 스타일을 사용할 수 있습니다. 또한 DataTemplates에서 트리거를 사용할 수도 있습니다.

추신 : 머리에서 코드를 썼습니다. 오타가있을 수 있습니다.

+0

그래서 ItemContainerStyle에서 TreeViewItem 컨트롤의 ControlTemplate을 완전히 교환 할 수 있다고 생각합니까? 이 기본 확장 아이콘을 (ViewModel 상태를 기반으로) 교환 할 수있는 유일한 방법일까요? – bitbonk

+0

맞아요, Bitbonk. – Anvaka

관련 문제