2010-10-27 43 views
0

我是silverlight的新手。對不起,如果這是一個簡單的問題。Silverlight asp:silverlight標籤

我試圖在瞭解創建VS2010使用Silverlight 4示例應用程序。由defualt在aspx頁面生成的代碼是(除了腳本):

<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <param name="source" value="ClientBin/test.xap"/> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="3.0.40624.0" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe> 
</div> 

我想用asp:Silverlight的標籤,所以我加了DLL System.Web.Silverlight.dll(V2。 0)。

我的標籤,我取代了上面的代碼:

<asp:ScriptManager ID="ScriptManager1" runat="server" ></asp:ScriptManager> 
<asp1:Silverlight ID="test" runat = "server" Source="~/ClientBin/test.xap"> 
</asp1:Silverlight> 

現在上面的代碼(個體經營產生的一個)的作品,但是asp:silverlight顯示空白屏幕。

此外,另一個問題,如果我們有2個或更多的XAML文件,如何給他們打電話? (由於我們僅僅指剛指一個XAP文件,其中提到在XAML文件應程序參考)

在此先感謝。

回答

0

堅持使用<object>標記來定義您的Silverlight應用程序,因爲@Alex提到舊的Silverlight服務器控件已棄用 - 它所做的只是爲您呈現object標記,並且可能不會聲明您需要的所有參數。使用它時,在呈現的頁面上執行右鍵單擊 - >查看源代碼,查看它與手動使用object標記之間的區別。

用於顯示SL應用程序中的特定XAML頁面,我會認爲,以顯示該頁面的選擇是由發生在應用程序之外的行動決定。在這種情況下,有幾種選擇。您可以使用JavaScript調用SL應用程序中的託管代碼功能,該功能可以顯示相應的頁面。您可以從SL應用程序返回到包含頁面 - 您可以調用JavaScript函數或訪問頁面上的HTML元素。另外,您可以在信息傳遞的SL應用InitParams的一部分:

<param name="InitParams" value="<% =GetMyInitParams() %>" /> 

在aspx頁面的代碼背後:

protected string GetMyInitParams() 
{ 
    return "MyStartPage=Page1,SomeOtherParam=blah"; 
} 

這些initParams在可作爲您StartupEventArgs在SL應用的Application_Startup

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     if (e.InitParams != null && e.InitParams.Count > 0) 
     { 
      foreach (string key in e.InitParams.Keys) 
      { 
       switch (key) 
       { 
        case "MyStartPage": 
         myPageToShow = e.InitParams["MyStartPage"]; 
         break; 
       } 
      } 
     } 
     this.RootVisual = new MainPage(); 
    } 
+0

當我使用值myPageToShow,並選擇啓動控制,它不能加載控制!任何想法!! – genericuser 2010-11-23 21:39:38

1

我認爲asp:Silverlight標記被刪除,我會去生成一個。對於其他xaml文件,您必須以某種方式將它們包含在MainPage.xaml中,方法是導航到它們或顯示它們。