3

当我得到ItemsSourcemyItemsControl时,它会将ObservableCollection视图模型边界返回给我的用户控件,但我想获得ObservableCollection我的用户控件。如何获得包含在我的用户控件ItemsControl

4

3 回答 3

1

首先,您需要调用 ItemsControl.ContainerFromElement 以获取显示的每个数据项的“根控件”。您可以使用 VisualTreeHelper 来迭代控件。

于 2012-06-27T12:23:53.660 回答
1

您还可以查看ItemContainerGenerator。您可能可以使用ContainerFromIndexContainerFromItem方法来获取每个元素的容器。

于 2012-06-27T12:26:58.563 回答
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;
}
于 2012-06-27T12:41:36.123 回答