您好,提前感谢您提供的任何帮助。我一直在尝试通过在 Silverlight 5 中使用分层数据模板将数据绑定到树视图。我正在尝试实现具有三个级别的层次结构。但是,我的模板只能生成两个。无论我尝试什么,第三级都没有出现,即使有三个层次数据模板,每个模板都使用前任作为项目模板。我的 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>