2010-08-24 86 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