我的silverlight应用程序中有一个treeview控件,它使用2个HierarchicalDataTemplate来显示所需格式的数据。我希望这个树在第一次打开时自动扩展(最好是我可以在任何时候调用的代码片段)。
也欢迎给定代码的任何替代方案。
<sdk:TreeView x:Name="tvPageManager" Style="{StaticResource PageManagerStyle}"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Auto">
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding KeyPoints, Mode=TwoWay}">
<StackPanel Orientation="Horizontal">
<ToolTipService.ToolTip>
<ToolTip Content="{Binding PageName}" Style="{StaticResource ToolTipStyle}"/>
</ToolTipService.ToolTip>
<Image x:Name="imgPageIcon" Source="{Binding PageIconImage}" Style="{StaticResource PageIconStyle}" Tag="{Binding BurstPageId, Mode=TwoWay}" />
<TextBlock x:Name="tbkLiteralTextPage" Text="Page " Style="{StaticResource PageNameLiteralTextBlockStyle}" />
<TextBox x:Name="tbPageName" Text="{Binding PageName, Mode=TwoWay}" Style="{StaticResource PageNameTextBoxStyle}" />
</StackPanel>
<sdk:HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="imgKeypointIcon" Source="../Assets/Images/bullet_yellow.png" Style="{StaticResource KeypointIconStyle}"/>
<TextBlock x:Name="tbkKeypointTitle" Text="{Binding Title, Mode=TwoWay}" Style="{StaticResource KeypointNameTextBlockStyle}" />
<StackPanel x:Name="spnlMoveImages" Orientation="Horizontal" HorizontalAlignment="Right" Width="30">
<Image x:Name="imgMoveUp" Source="../Assets/Images/up_arrow.png" Style="{StaticResource MoveIconsStyle}" Tag="{Binding KeyPointId}"/>
<Image x:Name="imgMoveDn" Source="../Assets/Images/down_arrow.png" Style="{StaticResource MoveIconsStyle}" Tag="{Binding KeyPointId}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</sdk:HierarchicalDataTemplate.ItemTemplate>
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
</sdk:TreeView>
此控件绑定到BurstPage类的Observable列表。完整的数据结构如下;
父元素是Burst对象,包含1到n个BurstPage对象,任何给定的BurstPage可能包含1到n个Keypoint对象。
BurstPage.Name(比如1) Keypoint.Name(比如A) Keypoint.Name(比如说B) Keypoint.Name(比如说C) BurstPage.Name(比如2) BurstPage.Name(比如3) Keypoint.Name(比如说D) Keypoint.Name(比如E)
答案 0 :(得分:0)
我觉得你的帖子中缺少很多代码......
但我认为您可能会发现以下内容有用:one-more-platform-difference-more-or-less-tamed
它有一些关于如何绑定树视图等控件的好指针,并在代码中使用它们。
答案 1 :(得分:0)
你是对的,XAML最初只会扩展树,同时添加我使用的新节点;
private void ExpandNode()
{
if (branchSelector < 1)
return;
TreeViewItem item = null;
int itemAtIndex = 0;
//Update tree layout
this.tvName.UpdateLayout();
foreach (var branch in this.tvName.Items)
{
item = (this.tvName.GetContainerFromItem(this.tvName.Items[itemAtIndex]) as TreeViewItem);
if (item != null && item.HasItems)
{
if ((branch as Model.BranchBusinessObject).Id== branchSelector && (!item.IsExpanded))
item.IsExpanded = true;
}
itemAtIndex++;
}
}