바인딩 된 (ItemsSource) ViewModels의 상태에 따라 TreeView Controltemplate의 일부를 변경해야한다는 문제가 있습니다. 예를 들어 작은 확장기 아이콘은 각 항목 ViewModel 상태에 따라 다른 도면으로 교환해야합니다. 각 ViewModel의 상태에 근거 해, 아이 항목은 디폴트의 수직 방향 대신에 수평 방향으로 배치 할 필요가 있습니다.ViewModel은 어떻게 ControlTemplate을 구동 할 수 있습니까?
0
A
답변
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에서 트리거를 사용할 수도 있습니다.
추신 : 머리에서 코드를 썼습니다. 오타가있을 수 있습니다.
그래서 ItemContainerStyle에서 TreeViewItem 컨트롤의 ControlTemplate을 완전히 교환 할 수 있다고 생각합니까? 이 기본 확장 아이콘을 (ViewModel 상태를 기반으로) 교환 할 수있는 유일한 방법일까요? – bitbonk
맞아요, Bitbonk. – Anvaka