2013-10-14 3 views
0

У меня есть следующий код в ServiceTree контроля, который должен представить TreeView услуг в ServiceGroup:Почему мои данные TreeView не заполнены?

<Grid> 
    <TreeView ItemsSource="{Binding Services}" DataContext="{Binding}"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type businessService:BusinessService}"> 
       <TreeViewItem Header="{Binding Name}"/> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 
</Grid> 

В верхнем уровне связывания, Services является набор сервисов, который принадлежит к ServiceGroup.

В главном окне, я использую следующие привязки данных для создания OdcExpander из проекта Odyssey:

<ItemsControl.ItemTemplate> 
    <DataTemplate DataType="groups:ServiceGroup"> 
     <odc:OdcExpander Header="{Binding UIMetadata.MenuText}" HeaderBackground="{Binding UIMetadata.MenuTabBackColor}">        
      <XTime900Shell:ServiceTree />        
     </odc:OdcExpander> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 

Это работает. Я получаю один расширитель, правильно привязанный к каждому ServiceGroup, но в группах с услугами, то есть в группе «Сотрудники», есть место, где должно быть дерево, пропорциональное по высоте количеству услуг, которые оно должно показывать, поэтому оно является обязательным к свойству коллекции Services и созданию элемента для каждой службы, но не отображая ничего для свойства «Имя» службы, которое, как я знаю, правильно заполнено.

+0

вы получаете какие-либо обязательные в иных ошибки выходного окна? – Nitin

ответ

1

Я думаю, что ошибка в том, что вы используете TreeViewItem, вы не должны. Если вы создаете шаблон данных, вы можете показать любой визуальный элемент, например текстовый блок. Элемент tree view будет элементом контейнера, который будет отображаться как текстовое поле (для instace). вы должны сделать так:

<TreeView.ItemTemplate> 
     <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type businessService:BusinessService}"> 
      <TextBlock Text="{Binding Name}"/> 
     </HierarchicalDataTemplate> 
    </TreeView.ItemTemplate> 

Надежда работает ...

+0

Он работает так же, как и в других сценариях, и, тем не менее, не работает в этом случае, когда я предпочитаю использовать «TextBlock». – ProfK

+0

Оказывается, «Дети» были «Словарем», а не списком. Исправлено это и все работает. – ProfK

Смежные вопросы