我试图在拥有几类森林的森林中打树。
基本结构就是这样:
Root
|_
| Cat A
|_
| Cat B
|_
Cat C
每个类别必须单独进行可观察的收集。 我的大多数类别非常简单。 属于这一类的树木配上了书目,没有等级。 然而,我确实有一个类别,需要作为特别等级的代表。
以上树木中的“Cat C”形象也一样:
Servers
|_
| [SERVER A s DISPLAY NAME]
| |_
| | Namespaces
| | |_
| |_ [NAMESPACE alpha s DISPLAY NAME]
| | Deployments
| | |_
| |_ [DEPLOYMENT 1 s DISPLAY NAME]
|_ Configuration File
[SERVER B s DISPLAY NAME]
基本上,我想的是硬的代号 parent子树,用固定头盔。 然后,该项目应收集显示其名称的项目。 对于原父母的每个子女,应当有三个固定项目,有动态的儿童清单。
撰写这一文章,我认为这应该是一个非常简单的问题,可以解决。 然而,在经过几天后,我无法享有工作等级。 下面是我最难得的。 I ve利用“儿童”的综合收集,把姓名空间、部署和编造档案收集到一起。 然而,我不能将他们分开。
<TreeViewItem ItemsSource="{Binding Path=Configuration.Servers}"
IsExpanded="True" >
<TreeViewItem.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}">
<Setter Property="IsExpanded" Value="True"/>
</Style>
</TreeViewItem.ItemContainerStyle>
<TreeViewItem.HeaderTemplate>
<DataTemplate>
<Border Margin="0,2,2,0">
<StackPanel Orientation="Horizontal">
<Image Source="/WPF;component/Images/server_chart.png"
Margin="0,0,5,0"/>
<TextBlock Text="Cognos Servers" />
</StackPanel>
</Border>
</DataTemplate>
</TreeViewItem.HeaderTemplate>
<TreeViewItem.Resources>
<HierarchicalDataTemplate ItemSource="{Binding Path=Children}" DataType="{x:Type local:Server}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}" >
<Setter Property="IsExpanded" Value="True"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding DisplayName}" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown">
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Header="Refresh" Click="TreeItemMenu_AddNewClient">
<MenuItem.Icon>
<Image Source="/WPF;component/Images/arrow_refresh.png" />
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Add Client..." Click="TreeItemMenu_AddNewClient" />
<Separator />
<MenuItem Header="Remove" Click="TreeItemMenu_RemoveClick">
<MenuItem.Icon>
<Image Source="/WPF;component/Images/server_delete.png" />
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Clients}" DataType="{x:Type local:Namespace}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}" BasedOn="{StaticResource {x:Type TreeViewItem}}" >
<Setter Property="IsExpanded" Value="True"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding DisplayName}" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown" />
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type local:Client}">
<TextBlock Text="{Binding DisplayName}"
ContextMenu="{StaticResource ResourceKey=ContextMenuTreeItem}"
PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown" />
</DataTemplate>
</TreeViewItem.Resources>