2011-09-15 1 views
1

MVVM을 사용하여 트리 뷰에서 노드를 확장하는 방법은 무엇입니까?MVVM을 사용하여 Silverlight 툴킷 트리 뷰에서 하나의 노드를 확장하는 방법은 무엇입니까?

x 레벨의 treeview가 있고 TreeView 컨트롤에 바인딩하기 위해 고유 한 클래스를 만들었습니다.

TreeView 목록을 만들 때 IsSelected 속성을 true으로 설정할 수있었습니다. 그래서 여기

내 클래스 ... 난 그냥 TreeViewItem IsSelected 속성에 내 IsSelected 값을 바인드 할 필요가 있지만,이 모든 것을 간단하지 : 나는 시도

public class HierarchicalItem : Model 
{ 
    public string Name { get; set; } 
    public int Id { get; set; } 

    private bool _IsSelected; 
    public bool IsSelected 
    { 
     get { return _IsSelected; } 
     set 
     { 
      if (_IsSelected != value) 
      { 
       _IsSelected = value; 
       RaisePropertyChanged("IsSelected"); 
      } 
     } 
    } 

    private ObservableCollection<HierarchicalItem> _children; 
    public ObservableCollection<HierarchicalItem> Children 
    { 
     get 
     { 
      return _children; 
     } 
     set 
     { 
      if (_children != value) 
      { 
       _children = value; 
       RaisePropertyChanged("Children"); 
      } 
     } 
    } 
} 

IsSelectedIsExpanded과 :

<controls:TreeView.ItemContainerStyle> 
    <Style TargetType="controls:TreeViewItem"> 
     <Setter Property="IsSelected" Value="{Binding IsSelected}" /> 
    </Style> 
</controls:TreeView.ItemContainerStyle> 

그러나 IsSelectedIsExpanded가 (이 WPF에서 작동) 읽기 전용 있음을 반환합니다.

나는 많은 트릭을 보았지만 목록 상자와 각각의 treeviews에 동적 노드 뷰가 있기 때문에 노드 전체 경로를 주어진 Id으로 확장해야하므로 아무 것도 작동하지 않는다. 예를 들어, 각 트리 뷰에서 Id = 30 인 모든 노드를 확장하려고합니다.

답변

0

불행하게도, 틀림없이 매우는 TreeViewItem의에서 ToggleButton을 구속력을 설정하는 것입니다 전부는 아닙니다으로 IsExpanded을 설정하는 실버 라이트 4에

한 가지 방법은 스타일 세터에 바인딩을 설정할 수 없습니다 컨트롤 템플릿. http://msdn.microsoft.com/en-us/library/dd728671(v=vs.95).aspx으로 가면 TreeViewItem의 기본 컨트롤 템플릿을 얻을 수 있습니다. 이 복사하고 대체 할 수있는 다음 와

스타일 세터와 함께 올 것이다
+0

실버 라이트 5, 지금 난 그냥 변환기를 사용에 isSelected을 가지고 해당 노드에 컬러 배경을 설정하기위한 즉, 내 문제를 해결 희망 전체 트리보기를 확장하면 사용자는 노드를 찾아야합니다. – Rumplin