0

私はList<T>いくつかUserControlの s を持っています。メイン ウィンドウには がありGrid、いくつかUserControlの が に追加されGrid.Childrenます。今、私はこれから特定UserControlの sを削除できるようGridにしたいと思います。たとえば、このようなことをしたいと思います

layoutRoot.Children.Remove(controlList[1]);

これは可能ですか?私は知っているだけFindName()ですFindResource()が、すべてのUserControls には名前がないため、これらのメソッドを使用できません:(

前もって感謝します!

4

1 に答える 1

1

ユーザーコントロールのタイプがわかっている場合は、次のようなメソッドを使用できます。

static T FindVisualChild<T>(Visual parent) where T : Visual
{
    T child = default(T);
    int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < numVisuals; i++)
    {
        var visual = (Visual)VisualTreeHelper.GetChild(parent, i);

        child = visual as T;
        if (child == null)
            child = FindVisualChild<T>(visual);
        if (child != null)
            break;
    }
    return child;
}
于 2012-10-13T23:53:33.350 に答える