2010-10-27 35 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中,方法是导航到它们或显示它们。