为什么我的数据绑定TreeView项目为空?

时间:2013-10-14 11:57:37

标签: c# wpf data-binding treeview

我在ServiceTree控件中有以下标记,该控件应在TreeView中显示ServiceGroup个服务:

<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`属性的任何内容,我知道这个属性已正确填充。

1 个答案:

答案 0 :(得分:1)

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

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

希望有效......