2012-06-27 98 views
3

包含在一個ItemsControl的控件當我拿到我的ItemsControlItemsSource,它的視圖模型界的ObservableCollection回到我到我的用戶控件,但我想我的用戶控件的ObservableCollection。 我怎樣才能獲得包含在我的ItemsControl用戶控件?獲取代碼

回答

1

首先,你需要調用ItemsControl.ContainerFromElement獲得「根控制」顯示的每個數據項。而且你可以使用VisualTreeHelper遍歷控制。

1

您可以使用FindByName根控制的,或經過視覺樹具有這種功能

public static FrameworkElement FindByName(string name, FrameworkElement root) 
{ 
    Stack<FrameworkElement> tree = new Stack<FrameworkElement>(); 
    tree.Push(root); 

    while (tree.Count > 0) 
    { 
     FrameworkElement current = tree.Pop(); 
     if (current.Name == name) 
      return current; 

     int count = VisualTreeHelper.GetChildrenCount(current); 
     for (int i = 0; i < count; ++i) 
     { 
      DependencyObject child = VisualTreeHelper.GetChild(current, i); 
      if (child is FrameworkElement) 
       tree.Push((FrameworkElement)child); 
     } 
    } 

    return null; 
}