문제

나는있다 TreeView 세 가지 레벨이 있습니다.

리그, 디비전 및 팀이라고 가정 해 봅시다 TreeView.

이제 나무에있는 각 항목을 선택하면 자세한 정보를보고 싶습니다.

이것을 달성하는 가장 좋은 방법은 무엇입니까?

부터 Grid 항목이 아닙니다 (a ListBox), 나는 단지 그것을 설정할 수 없습니다 ItemsSource 그리고 만듭니다 DataTemplate...

나는 a를 사용하는 것에 대해 생각했다 ListBox 선택한 항목 만 포함하지만 이것은 매우 나쁘게 보입니다 ...

감사.

도움이 되었습니까?

해결책

먼저 3을 정의합니다 DataTemplate리그, 디비전 및 팀 클래스에 대한 s. 후에, 당신은 묶습니다 TreeView 물체의 근본에. 리그 및 디비전 수업에는 어린이를 반환하는 어린이 재산이 있어야합니다. 모든 수업에는 이름 속성이 있어야합니다.

그런 다음 단일 객체를 표시하려면 ContentPresenter, 그리고 그 내용은 그 내용을 바인딩합니다 SelectedItem 만약 TreeView.

예를 들어:

<StackPanel>
   <StackPanel.Resources>

       <DataTemplate DataType="{x:Type your_namespace:League}">
           <StackPanel Orientation="Vertical">
               <TextBlock Text={Binding Name}/>
               <.../>
           <StackPanel>
       </DataTemplate>

       <DataTemplate DataType="{x:Type your_namespace:Division}">
           <StackPanel Orientation="Vertical">
               <TextBlock Text={Binding Name}/>
               <.../>
           <StackPanel>
       </DataTemplate>

       <DataTemplate DataType="{x:Type your_namespace:Team}">
           <StackPanel Orientation="Vertical">
               <TextBlock Text={Binding Name}/>
               <.../>
           <StackPanel>
       </DataTemplate>

   </StackPanel.Resources>

   <TreeView x:Name="_tree" ItemsSource="{Binding RootOfYourItems}">
      <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
            <TextBlock Text={Binding Name}/>
        </HierarchicalDataTemplate>
   </TreeView>

   <ContentPresenter Content="{Binding Path=SelectedItem, ElementName=_tree}" />

</StackPanel>

이 코드는 테스트 또는 컴파일되지 않았으며 예제로 제공되었습니다.

다른 팁

트리 구조에 대한 속성, 현재 선택 및 현재 선택에 대한 세부 사항이있는 뷰 모델을 만듭니다.

트리 구조물은 트리 뷰에 한 방향으로 바인딩되며, 트리 뷰에서 선택된 시티 템은 현재 선택 특성에 묶인 onewaytosource입니다 (속성의 한계로 인해). 이 속성은 현재 선택이 변경되면 자식 항목 목록을 변경하고 하위 항목이리스트 상자에 표시되는 경우를 표시합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top