Как отправить данные на страницу, к которой осуществляется переход с помощью Frame.Navigate в Silverlight 4 - PullRequest
1 голос
/ 11 июля 2011

Платформа:

Silverlight 4 / .NET 4

Фон:

У меня есть страница, которая состоит издве части.Левая часть - это древовидная структура, правая - область содержимого.Когда я выбираю элемент дерева, в правой части страницы должна быть загружена соответствующая страница UserControl, в зависимости от типа элемента дерева.

Я использую объект Frame, определенный в XAML.Когда пользователь выбирает элемент древовидного представления, я определяю тип элемента и затем перехожу на страницу, определенную для этого типа.

Однако Frame.Navigate является асинхронным методом, поэтому, если я пытаюсь получить содержимое кадрапосле Навигации фрейм еще не перемещался, поэтому я либо ничего не получаю, либо последняя загруженная страница.

contentFrame.Navigate(new Uri("/PageA.xaml", UriKind.Relative));
PageA page = contentFrame.Content as PageA;
// page here is either null or a previously opened page

Проблема:

Мне нужно отправить некоторые данные(хранится в теге элемента дерева) на странице, к которой осуществляется переход, и единственная перегрузка Frame.Navigate является асинхронной (без обратного вызова). Как я могу отправить некоторые данные на страницу навигации? Есть ли какой-нибудь другой метод для достижения того, что мне нужно?

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Вы определенно хотите использовать некоторую разновидность паттерна MV-VM, предложенную Nilesh.

Полагаю, вы могли бы также иметь статический класс, который содержит статические ссылки на объекты.Вы можете просто ссылаться на статические объекты здесь, когда ваши кадры завершили свое событие (например, NavigatedTo).

0 голосов
/ 11 июля 2011

Вы можете использовать NavigationService, предоставляемый Silverlight. Он имеет поддержку строки запроса, используя которую вы можете создать RESTful URI. Я предполагаю, что вам нужно передать некоторые контекстные данные на целевую страницу. Следующие ссылки могут помочь вам

http://www.silverlightshow.net/items/The-Silverlight-3-Navigation-Framework.aspx

http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2009/04/02/silverlight-3-quick-tip-6-navigation-framework-and-uri-routing.aspx

http://www.wintellect.com/CS/blogs/jprosise/archive/2009/04/07/silverlight-3-s-new-navigation-framework.aspx

Хотя в ссылках указано Silverlight 3, эти функции поддерживаются и в Silverlight 4.

...