Как получить верхний объект (окно или страницу) в WPF? [Дубликат]

  1. ApplicationContext является более предпочтительным способом, чем BeanFactory
  2. В новых версиях Spring BeanFactory заменяется на ApplicationContext. Но все же BeanFactory существует для обратной совместимости
  3. ApplicationContext extends BeanFactory и имеет следующие преимущества: он поддерживает интернационализацию текстовых сообщений, которые он поддерживает публикацию событий для зарегистрированных слушателей, доступ к ресурсам, таким как URL-адреса и файлы
29
задан Alan Mendelevich 8 May 2009 в 08:37
поделиться

4 ответа

Это работает для меня:

Window parentWindow = Window.GetWindow(this);
64
ответ дан Kirk Woll 8 May 2009 в 08:37
поделиться
var parent = VisualTreeHelper.GetParent(this);
while (!(parent is Page))
{
    parent = VisualTreeHelper.GetParent(parent);
}
(parent as Page).DoStuff();
28
ответ дан Community 8 May 2009 в 08:37
поделиться

Вы можете использовать класс VisualTreeHelper для извлечения элемента управления верхнего уровня:

DependencyObject GetTopLevelControl(DependencyObject control)
{
    DependencyObject tmp = control;
    DependencyObject parent = null;
    while((tmp = VisualTreeHelper.GetParent(tmp)) != null)
    {
        parent = tmp;
    }
    return parent;
}
6
ответ дан Thomas Levesque 8 May 2009 в 08:37
поделиться

Я думаю, что лучший способ это

var obj = VisualTreeHelper.GetParent((DependencyObject)Content);
0
ответ дан user1497142 8 May 2009 в 08:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: