Итак, следующее довольно легко в WPF, но как бы вы сделали это в Silverlight?
Обратите внимание, что здесь уловка состоит в том, чтобы отображать и группы, и записи на одном уровне.Кроме того, вы не знаете, как глубоко вложены записи, они могут быть на первом или на n-м уровне.Это сложно в Silverlight, потому что вам не хватает свойства DataType = "{x: Type local: Group}" в H.DataTemplate (или любом DataTemplate).Создание собственного пользовательского DataTempalteSelector также не сработало, потому что источник иерархических элементов теряется.(Который только что дал мне новую идею, которую я вскоре исследую)
Пример:
Group1
--Entry
--Entry
Group2
--Group4
----Group1
------Entry
------Entry
----Entry
----Entry
--Entry
--Entry
Group3
--Entry
--Entry
Ваши классы:
public class Entry
{
public int Key { get; set; }
public string Name { get; set; }
}
public class Group
{
public int Key { get; set; }
public string Name { get; set; }
public IList<Group> SubGroups { get; set; }
public IList<Entry> Entries { get; set; }
}
Ваш xaml:
<TreeView Name="GroupView" Grid.Row="0" Grid.Column="0" ItemsSource="{Binding}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Group}" ItemsSource={Binding Items}">
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:Entry}" >
<TextBlock Text="{Binding Path=Name}" />
</DataTemplate>
</TreeView.Resources>
</TreeView>