2010-12-08 6 views
2

데이터 소스가 있습니다.WPF : 바인딩 TreeView

private List<PlayData> _treeData = new List<PlayData>(); 

    private void Test() 
    { 
     _treeData.Add(new PlayData() 
     { 
      BoolList = new List<bool>() { true, false, true }, 
      Name = "A" 
     }); 

     _treeData.Add(new PlayData() 
     { 
      BoolList = new List<bool>() { true, false, true }, 
      Name = "B" 
     }); 

     DataContext = this; 
    } 

Name이 부모이고 Bool의 목록이 자식이므로 XAML에서이 값을 바인딩하는 방법은 무엇입니까? 나는 이것으로 불행하게 tryed했다 :

 <TreeView x:Name="treeView" Height="200" ItemsSource="{Binding Path=TreeData}" > 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Path=BoolList, Mode=TwoWay}" > 
       <TextBlock FontWeight="Bold" Text="{Binding Path=Name, Mode=TwoWay}" /> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 
+1

"불만족스러운"이란 무엇을 의미합니까? –

답변

0

그것은 당신이 무슨 일을하는지 샘플에서 분명하지 않다 -하지만 당신은 TreeData라는 코드에 정의 된 공공 재산이 있어야

  1. 본질적으로 (샘플에서 누락하지만,이 가정하면 하나입니다 반환 _ treeData)
  2. BoolList 요구는 당신은 자식 요소가 포함 된 트 리뷰의 각 요소에 대한 HierarchicalTemplate를 정의 할 필요가
  3. )의 경우 것 같다 (TreeData의 자식 속성이 될 수 있습니다.
  4. 당신이

    <HierarchicalDataTemplate DataType="{x:Type foo:PlayData}" 
        ItemsSource="{Binding BoolList}"> 
    
    에서 같은 개체의 유형을 선언 할 필요가 귀하의 경우와 같이 다른 데이터 유형이있는 경우 자식 요소

을 포함하지 않는 트 리뷰의 각 요소에 대한 정기적 DataTemplate 정의

여러 개의 일치 항목이있을 수있는 경우 템플릿 순서가 중요합니다.

0

_treeData 필드는 바인딩하기 위해 속성으로 노출되어야한다. 만약 당신이 그것을하고 있는지 여부는 당신의 샘플 코드에서 명확하지 않다.

원본 값으로 다시 밀어 넣을 입력이 없으므로 두 바인딩에서 모두 Mode = TwoWay를 제거 할 수도 있습니다.