我正在开发一个网站,其中包含许多输入数据的“表单”,我计划使用Silverlight和RIA服务来管理这些表单中的数据。站点的其余部分将是普通的HTML/CSS/JavaScript。
计划是创建一个带有多个页面的单一Silverlight控件,每个页面都代表一个表单。HTML页面将显示此控件,但将在Silverlight控件中显示特定页。
所以,我的问题是:
发布于 2010-08-24 07:02:56
Silverlight在URL的末尾使用URL书签来模拟导航。
例如http://somesite.com/somepage.aspx#formname
您还可以覆盖导航的默认行为,以便它可以执行一些很酷的操作,比如使用书签参数动态指定要显示的Silverlight表单的名称。
2-您只需要确保您的站点URL的书签部分包含Silverlight应用程序可以解释的内容。
查找INavigationContentLoader接口中使用自定义行为覆盖导航的示例,我很容易找到一些关于这个主题的文章。试试这个。
发布于 2010-08-24 23:08:22
经过一些搜索,我发现在HTML中定义Silverlight控件的"object“标记可以在其中包含一个"initParams”元素。
因此,我的想法是,我创建的每个页面都只有一个“表单”,因此,在"object“标记中,我刚刚设置了"initParams”来定义Silverlight控件应该设置为"RootVisual“的页面。
当控件加载时,Application_Startup将查看"initParams“并使用它来确定它需要创建的页面,并将其分配给应用程序的RootVisual属性。
詹姆斯
发布于 2010-08-24 23:20:32
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桥”:
https://stackoverflow.com/questions/3557762
复制