平台:
Silverlight 4 / .NET 4
背景
我有一个由两部分组成的页面。左侧部分是树视图,右侧是内容区域。当我选择一个树项时,应该在页面的右侧加载一个适当的UserControl页面,具体取决于树项的类型。
我正在使用在XAML中定义的Frame对象。 当用户选择树视图项时,我解析项的类型,然后导航到为该类型定义的页面。
但是,Frame.Navigate是一个异步方法,所以如果我尝试在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
问题:
我需要将一些数据(存储在treeview项目的标签中)发送到导航到的页面,并且唯一的Frame.Navigate重载是异步的(没有回调)。 如何将一些数据发送到导航页面?有没有其他技术可以完成我需要的工作?
答案 0 :(得分:0)
您可以使用Silverlight提供的NavigationService。它具有查询字符串支持,您可以使用它来构建RESTful URI。我假设您需要将一些基于上下文的数据传递到登录页面。以下链接可能会对您有所帮助
http://www.silverlightshow.net/items/The-Silverlight-3-Navigation-Framework.aspx
虽然链接显示Silverlight 3,但Silverlight 4也支持这些功能。
答案 1 :(得分:0)
你肯定想使用Nilesh建议的一些M-V-VM模式。
我猜你也可以有一个静态类来保存对象的静态引用。 您可以在帧完成事件时简单地引用静态对象(例如NavigatedTo)。