在这技术中,利用了silverlight的一个属性:source.这个属性指示当前的silverlight的XAMl文件从哪个地方读取。
然后,我们只需要动态地从客户端来变换XAML文件,就可以动态变换前台的XAML文件了。
关键代码如下:
1 首先,在silverlight页面中做一些初始化工作:

<body onload="root_Loaded()">
    
<form id="form1" runat="server">
<div id="slContent">
    
<script type="text/javascript">
        createSilverlight();
    
</script>
    
<script type="text/javascript">
    function root_Loaded() {
        
<%
            string 
strValue;
            if(Request.Params["ID"] 
== null)
                  strValue 
= "1";
            else
                    strValue 
= Request.Params["ID"];  
         
%>
        var ID = '
<% Response.Write(strValue); %>';
        var theHost = document.getElementById("AgControl1");
        theHost.source = "Data.aspx?ID=" + ID;
    }
    
</script>
    
</div>
    
</form>
</body>
可以看到,当这个页面Load完成以后,调用了页面Data.aspx,并且传递了参数,然后将这个Data页面的返回结果直接赋值给了silverlight的source,这样,就直接完成了动态改变前台XAMl文件的功能。

2 看Data.aspx是怎么从服务器端返回XAMl的:
在服务器端Pageload中,
 xmlDoc.Load(Server.MapPath("template.xaml"));
Response.ContentType 
= "text/xml";
        Response.Write(xmlDoc.InnerXml);
这样,就可以直接返回给客户端一个XAMl文件。


代码下载:https://files.cnblogs.com/silverlighter/LM_ASPNET_AGC1.zip

原文章地址:http://channel9.msdn.com/Showpost.aspx?postid=304524


这段代码后来又被我篡改,成了定时从服务器端获取XAMl文件,来更新客户端的了。呵呵,原来Silvelright也能Ajax!
posted on 2007-06-29 15:17  silverlightfans  阅读(948)  评论(0编辑  收藏  举报