从HTML导航Silverlight页面

时间:2010-08-24 14:52:13

标签: silverlight

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

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

所以,我的问题是:

  1. 在HTML页面中嵌入Silverlight控件时,如何让控件自动导航到特定页面?

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

3 个答案:

答案 0 :(得分:0)

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

e.g。 http://somesite.com/somepage.aspx #formname

您还可以覆盖导航的默认行为,以便它可以执行很酷的操作,例如使用bookmark参数动态指定要显示的Silverlight表单的名称。

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

查看INavigationContentLoader接口,了解使用自定义行为覆盖导航的示例。我很容易找到一些关于这个主题的文章。 Try this one

答案 1 :(得分:0)

经过一些搜索后,我发现在HTML中定义Silverlight控件的“object”标签中可以有一个“initParams”元素。

所以,我的想法是我创建的每个页面都只有一个“表单”因此在“object”标签中我只是设置“initParams”来定义Silverlight控件应该设置为“RootVisual”的页面。

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

詹姆斯

答案 2 :(得分: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)如果您想要将Silverlight控件与HTML(JavaScript)进行交互,那么 这被称为'Silverlight HTML桥':

HTML Bridge: Interaction Between HTML and Managed Code