Получить UserControl дочернего элемента управления в Windows 10

У меня есть UserControl, который состоит из нескольких дочерних элементов управления, позволяет вызвать его MyUserControl,

Таким образом, он содержит textbox среди других элементов управления, как ребенок. Если у меня есть ребенок textbox, Как я могу получить MyUserControl как родитель, а не только Grid тот textbox проживает в.

Есть статический метод, который я нашел, но он не работает.

public static T GetParentOfType<T>(this Control control)
{
    const int loopLimit = 100; // could have outside method
    var current = control;
    var i = 0;

do
{
    current = current.Parent;

    if (current == null) throw new Exception("Could not find parent of specified type");
    if (i++ > loopLimit) throw new Exception("Exceeded loop limit");

} while (current.GetType() != typeof(T));

return (T)Convert.ChangeType(current, typeof(T));

}

линия current = current.Parent; говорит не может конвертировать DependencyObject в Control

1 ответ

Я просто бросил как FrameworkElement и это работает.

 public static T GetParentOfType<T>(this FrameworkElement control)
    {
        const int loopLimit = 3; // could have outside method
        FrameworkElement current = control;
        var i = 0;

        do
        {
            current = current.Parent as FrameworkElement;

            if (current == null) throw new Exception("Could not find parent of specified type");
            if (i++ > loopLimit) throw new Exception("Exceeded loop limit");

        } while (current.GetType() != typeof(T));

        return (T)Convert.ChangeType(current, typeof(T));
    }
Другие вопросы по тегам