WPF TreeView не применяет DataTemplate соответственно - PullRequest
0 голосов
/ 02 марта 2010

У меня есть проект бизнес-объекта, который содержит составную структуру:

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 () для отображения этих элементов. Пожалуйста, скажите, где я ошибся. В противном случае, если я установлю это работает, но я не могу определить два шаблона там.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 марта 2010

Мой плохой - Основная сборка загружала dll с сущностями два раза вместо одного. Это привело к тому, что он сошел с ума - как только я исправил это и сборка загрузилась, как только проблемы исчезли.

0 голосов
/ 03 марта 2010

Хорошо, я заметил, что вы помещаете шаблон в ресурсы, а не в TreeVeiw.ItemTemplate.

TreeView должен иметь ItemTemplate (Иерархический) и набор ItemsSource. Не нужно ничего больше, чем это.

Может помочь с примерами данных для тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...