无法在Silverlight TreeView Control中填充第三级层次结构数据模板

时间:2012-08-08 14:01:27

标签: c# silverlight treeview silverlight-5.0 hierarchicaldatatemplate

您好,并提前感谢您提供的任何帮助。我一直在尝试通过在Silverlight 5中使用分层数据模板将数据绑定到treeView。我正在尝试实现具有三个级别的层次结构。但是,我的模板只能生成两个。无论我尝试什么都没有出现在第三级,即使有三个分层数据模板,每个模板都使用前一个作为项模板。我的xaml看起来如下:

<sdk:HierarchicalDataTemplate x:Key="ModTemplate" 
                              ItemsSource="{Binding Path=ServerChildren}" >
    <TextBlock FontStyle="Italic" Text="{Binding Path=ServerName}" />
</sdk:HierarchicalDataTemplate>

<sdk:HierarchicalDataTemplate x:Key="ChildTemplate2" 
                              ItemsSource="{Binding Path=ServerChildren}"
                              ItemTemplate="{StaticResource ModTemplate}">
    <TextBlock FontStyle="Italic" Text="{Binding Path=ServerName}" />
</sdk:HierarchicalDataTemplate>

<sdk:HierarchicalDataTemplate x:Key="GroupNameTemplate" 
                              ItemsSource="{Binding Path=ServerChildren}" 
                              ItemTemplate="{StaticResource ChildTemplate2}">
    <TextBlock Text="{Binding Path=GroupName}" FontWeight="Bold" />
</sdk:HierarchicalDataTemplate>

TreeView的数据上下文在后面的代码中设置为ServerOCollection类的可观察集合,该集合又具有ServerObject类的ObservableCollection,而后者又具有ModuleObject类的ObserverableCollection。我可以相应地填充TreeView的前两个级别,但在第三个级别中无法显示任何内容!请帮忙!

编辑:我可以通过将模板更改为以下内容来获得所需的结果:

<sdk:HierarchicalDataTemplate x:Key="ModTemplate" ItemsSource="{Binding ApplicationModules}">
            <StackPanel Orientation="Horizontal" >
                <ContentPresenter Margin="0 0 4 0" Content="{Binding Icon}" />
                <TextBlock FontStyle="Italic" Text="{Binding Path=ModuleName}" />
            </StackPanel>
        </sdk:HierarchicalDataTemplate>

        <sdk:HierarchicalDataTemplate x:Key="ChildTemplate2" 
                                      ItemsSource="{Binding Path=ApplicationModules}"
                                      ItemTemplate="{StaticResource ModTemplate}">
            <StackPanel Orientation="Horizontal">
                <TextBlock FontStyle="Italic" Text="{Binding Path=ServerName}" />
            </StackPanel>
        </sdk:HierarchicalDataTemplate>

        <sdk:HierarchicalDataTemplate x:Key="GroupNameTemplate" 
            ItemsSource="{Binding Path=ServerChildren}" 
            ItemTemplate="{StaticResource ChildTemplate2}">
            <StackPanel Orientation="Horizontal">
                <ContentPresenter Margin="0 0 4 0" Content="{Binding GroupIcon}" />
                <TextBlock Text="{Binding Path=GroupName}" FontWeight="Bold" />
            </StackPanel>
        </sdk:HierarchicalDataTemplate>

0 个答案:

没有答案