2013-10-14 45 views
0

我有一个ServiceTree控制下面的标记,它应该在ServiceGroup呈现服务的TreeView为什么我的数据库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

在主窗口中,我用下面的数据绑定从Odyssey项目创建一个OdcExpander

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

这工作。我得到一个正确绑定到每个ServiceGroup的扩展器,但是对于具有服务的组(即“Employees”组),树视图应该有一个空间,其高度与它应显示的服务数量成正比,因此它是绑定的到Services集合属性,并为每个服务创建一个项目,但不显示服务“Name”属性的任何内容,我知道该属性已正确填充。

+0

你得到在输出窗口任何约束力errros? – Nitin

回答

1

我认为错误是你正在使用TreeViewItem,你不应该这样做。如果您要创建数据模板,则可以显示任何可视项目,例如文本块。树视图项目将是容器项目,您将显示为文本框(用于instace)。你应该这样做:

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

希望工程......

+0

它的工作原理与其他场景一样,并且在我更喜欢使用“TextBlock”的情况下仍不起作用。 – ProfK

+0

结果'Children'是一个'Dictionary',而不是一个列表。修正了这个问题,一切正常 – ProfK

相关问题