我正在开发一个网站,其中包含许多用于输入数据等的“表单”,我计划使用Silverlight和RIA Services来管理这些表单中的数据。该网站的其余部分将是普通的HTML / CSS / JavaScript。
计划是创建一个包含许多页面的Silverlight控件,每个页面代表一个表单。 HTML页面将显示此控件,但会在Silverlight控件中显示特定页面。
所以,我的问题是:
在HTML页面中嵌入Silverlight控件时,如何让控件自动导航到特定页面?
加载HTML页面并显示Silverlight控件后,是否可以让一些JavaScript告诉Silverlight控件导航到另一个页面?
答案 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桥':