2010-08-24 60 views
0

我正在开发一个网站,其中包含许多用于输入数据等的“表单”,并计划使用Silverlight和RIA Services来管理这些表单中的数据。该网站的其余部分将是普通的HTML/CSS/JavaScript。浏览HTML中的Silverlight页面

该计划是创建一个带有许多页面的单个Silverlight控件,每个页面将代表一个表单。一个HTML页面会显示这个控件,但会在Silverlight控件中显示一个特定的页面。

所以,我的问题是:

  1. 当嵌入HTML页面中的Silverlight控件会如何控制自动定位到特定网页?

  2. 加载HTML页面并显示Silverlight控件后,是否有可能让某个JavaScript告诉Silverlight控件导航到另一个页面?

回答

0

1 - Silverlight使用的URL的末尾URL书签来模拟导航。

例如http://somesite.com/somepage.aspx#formname

您也可以覆盖导航的默认行为,以便它可以像使用书签参数动态指定的Silverlight的名字形成要显示很酷的事情。

2 - 您只需确保站点URL的书签部分包含Silverlight应用程序可以解释的内容。

查找INavigationContentLoader接口,以查找使用自定义行为覆盖导航的示例。我发现关于此主题的一些文章很容易。 Try this one

0

经过一番搜索后,我发现在HTML中定义Silverlight控件的“object”标记可以在其中有一个“initParams”元素。因此,我的想法是我创建的每个页面将只有一个“表格”,因此在“对象”标签中,我只是设置“initParams”来定义Silverlight控件应该设置为“RootVisual”的页面。

当控件加载时,Application_Startup会查看“initParams”并使用它来确定需要创建的页面并将其分配给应用程序的RootVisual属性。

詹姆斯

+0

我觉得它更容易检查查询字符串以SL,而不是修改你的HT毫升 - 你可以使用纯HTML页面,而不需要ASP.NET,PHP或其他。 – VyvIT 2010-08-25 12:59:38

0

1)解决方案之一(不是最好的之一)会是这样的:

private void Application_Startup(object sender, StartupEventArgs e) 
    { 

     var page = HtmlPage.Document.QueryString["Page"]; 
     RootVisual = GetPage(page); 

    } 

    private UIElement GetPage(string page) 
    { 
     switch (page) 
     { 
      case "page1": return new Page1(); 
      case "page2": return new Page2(); 
      default: return new PageNotFound(); 
     } 
    } 

2)如果你想互动与HTML(JavaScript的Silverlight控件),然后 这就是所谓的“Silverlight的HTML桥”:

HTML Bridge: Interaction Between HTML and Managed Code