当我得到ItemsSource
myItemsControl
时,它会将ObservableCollection
视图模型边界返回给我的用户控件,但我想获得ObservableCollection
我的用户控件。如何获得包含在我的用户控件ItemsControl
?
问问题
1736 次
3 回答
1
首先,您需要调用 ItemsControl.ContainerFromElement 以获取显示的每个数据项的“根控件”。您可以使用 VisualTreeHelper 来迭代控件。
于 2012-06-27T12:23:53.660 回答
1
您还可以查看ItemContainerGenerator。您可能可以使用ContainerFromIndex或ContainerFromItem方法来获取每个元素的容器。
于 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 回答