WPF 다중 마스터/세부 사항, 동일한 그리드
-
05-07-2019 - |
문제
나는있다 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입니다 (속성의 한계로 인해). 이 속성은 현재 선택이 변경되면 자식 항목 목록을 변경하고 하위 항목이리스트 상자에 표시되는 경우를 표시합니다.