У меня есть проект бизнес-объекта, который содержит составную структуру:
public class Tree
{ public IProductComponent TreeRoot { get; set; } }
public interface ITreeComponent
{ public string Name { get; set; } }
public class ContainerComponent : ITreeComponent
{ public BindingList<ITreeComponent> Children { get; set; } }
public class LeafComponent : ITreeComponent
{ }
Мне нужно связать эту структуру с TreeView в моем проекте WPF. Дерево сначала:
<TreeView x:Name="treeView" Grid.ColumnSpan="2">
<TreeView.Resources>
<HierarchicalDataTemplate
ItemsSource="{Binding Children}"
DataType="{x:Type businessObjects:ContainerComponent}">
<Label Content="{Binding Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type businessObjects:LeafComponent}">
<Label Content="{Binding Name}"/>
</DataTemplate>
</TreeView.Resources>
</TreeView>
и код для привязки:
bTreeView = new Binding();
bTreeView.Source = MyTree;
bTreeView.Path = new PropertyPath("TreeRoot.Children");
treeView.SetBinding(TreeView.ItemsSourceProperty, bTreeView);
Проблема в том, что TReeView на самом деле не использует эти шаблоны (он отображает только верхний уровень иерархии и вызывает .ToString () для отображения этих элементов. Пожалуйста, скажите, где я ошибся. В противном случае, если я установлю это работает, но я не могу определить два шаблона там.
Спасибо.