2012-06-26 30 views
0

不知道在經過漫長的一天工作之後,它是我還是WPF類型樹中的東西是不同的。我將數據添加到樹中,然後當它是父節點時需要添加其子節點,但SelectedItem始終爲空!TreeViewItem和空值

任何評論或指導將有所幫助。

謝謝。

XAML:

<TreeView x:Name="TreeView1" Grid.Row="0"> 
    </TreeView> 

Code: 
     TreeView myTree = FindChild<TreeView>(Application.Current.MainWindow, "TreeView1"); 

     myTree.Items.Add(ObjEmployee.Tag); 
     TreeViewItem tvi = (TreeViewItem) myTree.SelectedItem; 
//my assumption was that when an item is added to tree most recent used node will be selected but it seems something is avoiding it or maybe works in a different way. 
+0

TreeView的默認行爲是不選擇何時我們添加項目。 – GameAlchemist

+0

確切..我更新了我的答案..你可以手動選擇。 –

回答

0

你應該張貼一些代碼片斷。我不知道你需要什麼。

如果使用分級模板(http://msdn.microsoft.com/en-us/library/ms742521.aspx) 的SelectIedtem的目的將是你把的ItemsSource


否則,數據中的一個,該「的SelectedItem」可以是任何類型的可視部件的那你放在樹視圖裏面。

var treeItem = myTree.SelectedItem; 
if (treeItem != null) 
    treeitem.GetType().Name; 

通常使用的TreeViewItem樹形視圖中,所有的對象都在treeViewItem.Items


(編輯)你可以試試這個:

  var result = FindVisualChildren<TreeViewItem>(treeView); 

      foreach (var item in result) 
      { 
       if (item.IsSelected) 
       { 
        .... 
       } 
      } 

public static IEnumerable<T> FindVisualChildren<T>(FrameworkElement depObj) where T : FrameworkElement 
    { 
     if (depObj != null) 
     { 
      for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) 
      { 
       FrameworkElement child = (FrameworkElement)VisualTreeHelper.GetChild(depObj, i); 
       if (child != null && child is T) 
       { 
        yield return (T)child; 
       } 

       foreach (T childOfChild in FindVisualChildren<T>(child)) 
       { 
        yield return childOfChild; 
       } 
      } 
     } 
    } 
+0

我已經通過添加我遇到的問題更新了我的問題。此外,試着發佈您的代碼,但沒有幫助。謝謝 –

+0

但foreach語句不能操作類型'System.Windows.Controls.TreeViewItem'的變量' –

+0

對不起,我忘了「var result = ...」 –