Silverlight 3.0 - Как получить доступ к значению элемента управления MainPage из UserControl - PullRequest
5 голосов
/ 13 ноября 2009

Мне нужно получить некоторые контрольные значения из MainPage в UserControl. В этом UserControl мне нужно иметь возможность получить значения Frame.ActualWidth & Frame.ActualHeight (в этом случае элемент Frame находится в MainPage, а UserControl загружается в Grid MainPage через Xaml). У кого-нибудь есть образец? Спасибо

Йосимари Мартарелли ESL Sistemas Logísticos Silverlight UI Design

jmartarelli@logfacil.com.br

Ответы [ 4 ]

7 голосов
/ 13 ноября 2009

MainPage m = (MainPage) Application.Current.RootVisual;

1 голос
/ 30 ноября 2010

Сначала я создал статический метод в классе App, который идет вверх по иерархии родителей, пока не найдет совпадение по имени. Это может быть использовано не только для MainPage. Все в иерархии должно быть производным от класса FrameworkElement.

    public static FrameworkElement GetParentByName(FrameworkElement currentPage, 
string ParentName)
    {

        FrameworkElement fe = (FrameworkElement)currentPage.Parent;

        // Walk your way up the chain of Parents until we get a match
        while(fe.GetType().Name != ParentName)
            fe = (FrameworkElement)fe.Parent;

        return fe;

    }

Затем, чтобы использовать это, я просто называю что-то вроде:

MainPage m = (MainPage) App.GetParentByName (this, "MainPage");

1 голос
/ 16 декабря 2009

В подобных случаях я часто буду использовать, чтобы мой класс MainPage имел открытую статическую ссылку на себя, Instance. Я установлю это "this" в конструкторе, а затем, когда мне понадобится доступ к MainPage из пользовательского элемента управления, я просто вызову что-то вроде:

MainPage.Instance. Foo

0 голосов
/ 15 марта 2013

Если вы используете страницу входа в систему, то вам необходимо сыграть, используя вашу страницу входа.

т.е. Login lp = (Login)Application.Current.RootVisual;
Вы можете использовать параметр, который вы создали на странице входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...