2014-07-15 2 views
0

textBlockcomboBox의 자식 노드를 허용하는 TreeView을 만들려고합니다. 다음은이 어떻게 보이는지의 사진입니다HierarchicalDataTemplate을 사용하여 다른 UI 컨트롤의 자식 노드가있는 TreeView 만들기

enter image description here

나는이가 XAML 내가 어떤 UI를 지정합니다 코드의 영역이기 때문에 HierarchicalDataTemplate를 사용하여 해결할 수있는 문제가 있다고 생각 나는 캠을 사용한다. 지금까지 나는 시도 구현 내 HierarchicalDataTemplate과 같이있는 StackPanel :

<HierarchicalDataTemplate DataType="{x:Type data:DataModel}" ItemsSource="{Binding Children}"> 
    <StackPanel> 
     <TextBlock Text="{Binding DisplayName}" /> 
     <ComboBox ItemsSource="{Binding CommandCollection}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 

하지만 그들은 모두 textBlockcomboBox을 포함 할 수 있도록 내가이 StackPanel 때문에 기본적으로 각 노드를 설정하는 것입니다와 올바른 해결책을 달성하지 않습니다. 이는 각 하위 노드가 textBlock 또는 comboBox이거나 둘 다 아니기 때문에 문제가됩니다. TreeView 자식 노드가 textBlocks 또는 comboBoxes 일 수있는 HierarchicalDataTemplate을 어떻게 설정합니까? TreeView이 구현 된 방법에 대한 자세한 내용을 원하거나 더 많은 코드를보고 싶다면 알려 주시기 바랍니다.

이 질문에 대한 배경 참조는 herehere입니다.

답변

0

데이터 템플릿을 사용하여 데이터 형식이 다른 템플릿을 만드는 것이 좋습니다. 템플릿을 TreeView.Resources에 배치하고 DataTemplate.DataType 속성을 사용하여 암시 적으로 수행 할 수 있습니다. 여기

은 예입니다 [Link]

당신이 계층 템플릿을 사용하여 하위 항목을 포함하는 속성에 각각 템플릿의 ItemsSource을 결합하는 것입니다 다른 유일한 것은.

+0

지금 사용하고있는 데이터 유형은 내 TreeView의 데이터 모델입니다. 나는'TextBlock'이 표시 될 때 보통'string'을 표시하는 반면,'ComboBox'는 대부분 ObservableCollection 을 표시한다는 것을 이해합니다. 따라서 데이터 모델 대신 사용할 것이 무엇인지 이해하지 못합니다. –

+1

@Ericafterdark : 사용자 정의 클래스를 사용하십시오. 'StringTreeItem'은 문자열 프로퍼티를 포함 할 것이고,'ComboTreeItem'은 선택된 값을위한 하나의 프로퍼티와 가능한 아이템의리스트를 포함하는 또 다른 프로퍼티를 포함 할 것입니다. 현재 하나의 유형 만있는 경우에는 어떤 기준 으로든 해당 유형을 사용하여 구조를 트리에 매핑해야합니다 (어떤 경우에도 문제가없는 경우). –

관련 문제