2014-07-14 1 views
0

내 프로그램에는 comboBoxestextBlocks 인 자식 노드를 허용하려는 treeView이 있습니다. My treeView과 노드는 MVVM 스타일로 만들어집니다. textBlock 자식 노드를 만드는 방법을 알고 있지만 다른 UI 도구의 자식 노드는 만들지 않았습니다.다른 UI 컨트롤의 자식 노드가있는 TreeView를 만드는 방법

treeview's XAML :

새로운 노드가 생성되고 TreeView (TreeViewViewModel)에 추가되는 곳입니다
TreeView ItemsSource="{Binding UserControl_DataModel.TreeViewViewModel.ObservableCollection<TreeViewDataModel>}" DisplayMemberPath="DisplayName.Value".../> 

:

private TreeViewDataModel createNewNode(string nodeName) 
{ 
    var newNode = new TreeViewDataModel() 
    { 
     DisplayName = nodeName 
    }; 

    newNode.Children.Add(new TreeViewDataModel() { DisplayName = nodeName}); 

    return newNode; 
} 

public void addNewLocNode(string nodeName) 
{ 
    TreeObservableCollection.Add(createNewNode(nodeName)); 
} 

가 어떻게 ComboBoxes있는 자식 노드를 만들려면 어떻게해야합니까 반면, 여전히 아이들에게 textblock 허용합니까? 아이들이 어떤 UI 도구를 사용하는지 지정하는 코드는 보이지 않기 때문에 혼란 스럽습니다. 더 많은 코드가 필요한지 알려주십시오.

(당신이 그것을 참조해야하는 경우이 같은 treeView에 대한 Previous question.)

업데이트 : 그냥 명확성을 위해,이 내 treeView 노드가 보는 방법입니다

:

enter image description here

다음과 같이 시도해보십시오.

<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}"> 
    <StackPanel> 
     <TextBlock Text="{Binding IndividualProperty}" /> 
     <ComboBox ItemsSource="{Binding CollectionProperty}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 

대신이 설정을 얻습니다. 나무의 각 항목은 TextBlockComboBox과 같습니다. comboBoxtextBlock 노드의 아이가 아닌 것을

enter image description here

참고하지만,이 textBlock 노드와 동일한 수준에있는 것처럼 그것은 더 : 어쩌면이 StackPanel 이외의 다른 옵션)입니다.

답변

0

ComboBox은 수집 컨트롤입니다. 따라서 ComboBox.ItemsSource에 바인드하려면 'node'객체에 컬렉션 속성이 필요합니다. '노드'개체의 개별 속성이 다소 이런 HierarchicalDataTemplate을해야 할 수도 있지만이 같은

<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}"> 
    <ComboBox ItemsSource="{Binding CollectionProperty}" /> 
</HierarchicalDataTemplate> 

아니면 :

<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}"> 
    <StackPanel> 
     <TextBlock Text="{Binding IndividualProperty}" /> 
     <ComboBox ItemsSource="{Binding CollectionProperty}" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 

<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}"> 
    <TextBlock Text="{Binding IndividualProperty}" /> 
</HierarchicalDataTemplate> 

이 같은 하나 더 필요

+0

고맙습니다. 이것은 올바른 방향으로 나를 이끌고있는 것 같습니다. 그러나, 나는 몇 가지 질문을한다. (마지막 예제 인 btw를 사용하고있다. 각 ComboBox는 그 위에'textBlock'이라는 제목이 있어야하기 때문이다.) 이전처럼 'textBlock'을 설정해도 'textBlock'이 전혀 표시되지 않는 것 같습니다. 왜 이런거야? –

+0

어떻게 알 수 있습니까? – Sheridan

+0

'HierarchicalDataTemplate'과 관련이 있다고 생각합니다. 변경하기 전에'TextBlock' 자식이 표시되고 있었기 때문입니다. –

관련 문제