我建议使用一种更AJAXy的方法:让JS请求XAML,然后在从服务器返回XAML之后,运行时将该XAML插入控件(请参见HTML
Bridge)中。这样,您的控件就可以对新显示进行漂亮的动画处理/过渡。
不过,您可以执行自己的目标:
- 将Silverlight服务器控件拍到“ 更新面板”中。
- 编写一个aspx页面以生成XAML(更改DocType以使事情变得更容易)
- 将Silverlight服务器控件指向.ASPX页面:
… asp:Silverlight ID =“ Xaml1” runat =“ server” Source =“〜/ ClientBin /
myXAMLPage.aspx” MinimumVersion =“ 2.0.30523” Width =“ 100%” Height =“ 100%”>
- 每当用户单击您的按钮时,触发UpdatePanel即可执行此操作。
现在,每当用户单击一个按钮时,将呈现“更新面板”(包含Silverlight控件),并且SL控件将请求XAML文件并呈现其找到的内容。
请注意,此方法使用XAML文件实例化控件。这意味着您将无法在Silverlight中使用托管代码。如果需要托管代码,请指定.xap文件,然后使用initparam指定“
myXAMLPage.aspx”,而不是在源代码中指定“
myXAMLPage.aspx”页面。在您的Silverlight应用程序内部,下载xaml文件(WebClient或其他),然后使用XamlReader.Load加载并显示它。
hth,埃里克



