开发者

How to send data to a page navigated to through the Frame.Navigate in Silverlight 4

开发者 https://www.devze.com 2023-03-19 12:51 出处:网络
Platform: Silverlight 4 / .NET 4 Background: I have a page that consists of two parts. The left part is a tree view, the right one is the content area. When I select a tree item, an appropriate Us

Platform:

Silverlight 4 / .NET 4

Background:

I have a page that consists of two parts. The left part is a tree view, the right one is the content area. When I select a tree item, an appropriate UserControl page should be loaded in the right part of the page, depending on the type of the tree item.

I am using a Frame object, defined in XAML. When a user selects a tree view item, I resolve the item's type and then I navigate to the page defined for that type.

However, Frame.Navigate is an asynchronous method so if I try to get the frame's content after Navigate, the frame has not navigated yet, so I either get nothing or the last loaded page.

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

Problem:

I need to send some data (stored in treeview item's Tag) to the page being navigated to and the only Frame.Navigate overload is asynchronous (without callback). How can I send some data to the navigated page?开发者_JAVA技巧 Is there any other technique for accomplishing what I need?


You can use the NavigationService provided by Silverlight. It has query string support using which you can build RESTful URI. I am assuming that you need to pass some context based data to the landing page. Following links might help you

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

Although the links says Silverlight 3, these features are supported in Silverlight 4 as well.


You definitely want to use some flavor of the M-V-VM pattern that Nilesh suggested.

I guess you could also have a static class that holds static references of objects. You can simply refer to static objects here when your frames have completed their event (e.g. NavigatedTo).

0

精彩评论

暂无评论...
验证码 换一张
取 消