2009-12-17 61 views
1

我正在构建基于Silverlight导航应用程序模板的Silverlight 3.0应用程序。我遇到的一个路障是在页面之间进行通信。例如,我在一个页面中,我想启动另一个页面并发送一些数据。我对如何做到这一点感到不知所措。如何在Silverlight 3.0应用程序中的视图之间进行通信?

任何想法?

+0

您的意思是从发起页面发送一些数据或向服务器发送请求并让新页面得到响应? – serialhobbyist

+0

哦,你在使用MVVM吗?和/或WCF RIA服务? 我已经阅读了您最近的几个问题 - 我还在构建一个Silverlight 3导航应用程序,并且遇到了类似的问题。 – serialhobbyist

回答

1

我发现了一个不涉及太多复杂性的有效解决方案。我正在使用LocalMessageSenderLocalMessageReceiver对象。这些对象的最初目的是在同一个网页上有两个Silverlight应用程序与每个应用程序进行对话,但它们同样有两个相互对话的视图。

这个用法非常简单。有关使用情况,请参阅此example

1

杰西自由有一个很好的blog post关于这一点。我在一个多页的Silverlight应用程序中使用了我自己描述的技术。

我不确定您是否可以将其应用于Silverlight导航应用程序模板。

+0

这是一篇很好的博文,但它适用于Silverlight 2。 – AngryHacker

1

您有2个选项

  1. 使用发布/订阅模式,我还没有使用过这一点,但在某些情况下是有用的,我不认为这会虽然解决乌尔问题。
  2. 使用请求参数,基本上当你导航到新的观点,称它像这样

    NavigationService.Navigate(新的URI( “/ HomePage.xaml HomePageId = 12?”,UriKind.Relative));

你可以拍一些的String.Format在那里,使其整洁,但你的想法,然后在新的视图中,使用string queryParam = HtmlPage.Document.QueryString["HomePageId"];在页面加载得到的,你要显示的信息的ID。

这应该做到这一点。

相关问题