2014-01-24 3 views
0

Я хочу создать древовидную структуру с неограниченными узлами. У меня есть 2 ViewModel для дерева:TreeView с неограниченными узлами

public class GroupViewModel 
{ 
    public GroupViewModel() 
    { 
    } 

    public string GroupName { get; set; } 

    public ObservableCollection<TagViewModel> Tags { get; set; } 
    public ObservableCollection<GroupViewModel> Groups { get; set; } 
} 

и

public class TagViewModel 
{ 
    public TagViewModel() 
    { 
    } 

    public string TagName { get; set; } 
} 

Мой XAML:

<HierarchicalDataTemplate DataType="{x:Type ViewModel:GroupViewModel}" ItemsSource="{Binding Path=Tags}"> 
    <TextBlock Text="{Binding Path=GroupName}" /> 
    </HierarchicalDataTemplate> 
<HierarchicalDataTemplate DataType="{x:Type ViewModel:TagViewModel}"> 
    <StackPanel HorizontalAlignment="Left" Orientation="Horizontal"> 
     <CheckBox /> 
     <TextBlock Text="{Binding Path=TagName}" Margin="5,0,0,0" /> 
    </StackPanel> 
</HierarchicalDataTemplate> 

TreeView Name="groupsTreeView"></TreeView> 

С

ItemsSource = "{Binding Path = Метки}"

я есть первый уровне группы с тегами

и с

ItemsSource = "{Binding Path = Группы}"

я есть группы с подгруппами - без тегов.

Как я могу создать дерево с группами и тегами?

ответ

0

Каждый узел дерева может использовать только одну коллекцию в качестве источника элементов для своих детей. У вас есть по крайней мере два варианта, чтобы объединить группы и теги в одной коллекции:

  • Изменить ViewModel, чтобы группы и метки в одном ObservableCollection
  • используйте устройство CompositeCollection объединить две коллекции в вашем XAML
Смежные вопросы