0

我在控件中有以下标记ServiceTree,它应该在 aTreeView中显示 a 服务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是属于 a 的服务的集合ServiceGroup

在主窗口中,我使用以下数据绑定OdcExpanderOdyssey项目中创建一个:

<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每个服务创建一个项目,但不显示服务“名称”属性的任何内容,我知道该属性已正确填充。

4

1 回答 1

1

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

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

希望有效...

于 2013-10-14T12:21:26.833 回答