我在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`属性的任何内容,我知道这个属性已正确填充。
答案 0 :(得分:1)
我认为错误是你正在使用TreeViewItem,你不应该。如果要创建数据模板,则可以显示任何可视项目,例如文本块。树视图项将是容器项,您将显示为文本框(对于instace)。你应该这样做:
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type businessService:BusinessService}">
<TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
希望有效......