3

を取得するItemsSourceと、ビュー モデルの境界がユーザー コントロールにItemsControl返されますObservableCollectionが、ユーザー コントロールの を取得したいと考えていObservableCollectionます。に含まれているユーザー コントロールを取得するにはどうすればよいItemsControlですか?

4

3 に答える 3

1

ItemContainerGeneratorもご覧ください。おそらく、ContainerFromIndexまたはContainerFromItemメソッドを使用して、各要素のコンテナーを取得できます。

于 2012-06-27T12:26:58.563 に答える
1

最初に、ItemsControl.ContainerFromElement を呼び出して、表示される各データ項目の「ルート コントロール」を取得する必要があります。また、VisualTreeHelper を使用してコントロールを反復処理できます。

于 2012-06-27T12:23:53.660 に答える
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 に答える