silverlight - 如何在 Silverlight TreeView 中选择一个项目?

标签 silverlight treeview

我在 Silverlight 中选择 TreeView 中的第一个 TreeViewItem 时遇到问题。以下代码仅在方法 SelectFistItemInCatTreeView 中给出 null 值。为什么?有什么想法吗?

<controls:TreeView  x:Name="treeCategories" Grid.Column="1" Grid.Row="2" SelectedItemChanged="treeCategories_SelectedItemChanged">
  <controls:TreeView.ItemTemplate>
    <common:HierarchicalDataTemplate  ItemsSource="{Binding SubCats}">
      <StackPanel >
        <TextBlock Text="{Binding Name}"></TextBlock>
      </StackPanel>
    </common:HierarchicalDataTemplate>
  </controls:TreeView.ItemTemplate>
</controls:TreeView> 



1            public MainPage()
2            {
3                InitializeComponent();
4    
5                DBService.DocTrackingServeceClient webService = new DockTracking.DBService.DocTrackingServeceClient();
6                webService.GetDocCategoriesCompleted += new EventHandler(webService_GetDocCategoriesCompleted);
7                webService.GetDocCategoriesAsync();
8                treeCategories.Loaded += new RoutedEventHandler(treeCategories_Loaded);
9            }
10   
11           void webService_GetDocCategoriesCompleted(object sender, DockTracking.DBService.GetDocCategoriesCompletedEventArgs e)
12           {
13   
14               List cats = new List();
15               cats = GetCats(e.Result.ToList(), null);
16               treeCategories.ItemsSource = cats;
17           }
18   
19           void treeCategories_Loaded(object sender, RoutedEventArgs e)
20           {
21               SelectFistItemInCatTreeView();
22           }
23   
24           private void SelectFistItemInCatTreeView()
25           {
26               TreeViewItem item = treeCategories.ItemContainerGenerator.ContainerFromItem(treeCategories.Items[0]) as TreeViewItem;
27               if (item != null)
28               {
29                   item.IsSelected = true;
30               }
31           }

最佳答案

在获取 TreeViewItem 之前调用 UpdateLayout() 可以解决问题:

private void SelectFistItemInCatTreeView()
{

  treeCategories.UpdateLayout();

  TreeViewItem item = treeCategories.ItemContainerGenerator.ContainerFromItem(treeCategories.Items[0]) as TreeViewItem;
  if (item != null)
  {
    item.IsSelected = true;
  }
}

关于silverlight - 如何在 Silverlight TreeView 中选择一个项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394543/

相关文章:

c# - moonlight vs. silverlight::datagrid 不兼容?

multithreading - Silverlight - 在从方法返回之前等待异步调用完成

wpf - MVVM和Prism v2有什么区别

asp.net - 如何在 ASP.NET Treeview 中实现右键单击选项

c++ - GTK TreeView /存储列扩展

c# - Silverlight 使用当前的 .NET 项目

silverlight - 无法将 VM 中的 ICommand 绑定(bind)到 xaml 中的按钮命令

c# - 将 WPF TreeView 绑定(bind)到多个列表

python - 如何在条目被禁用时在 tkinter 条目小部件中插入值

c# - 如何使用 slider 在两个 TreeView 中同步滚动