<Canvas … >
<Rectangle
x:Name="rct"
Width="200" Height="100" …/>
</Canvas>
緊接著我們看看用來呈現Silverlight內容的網頁檔案:
<body>
<form id="form1" runat="server">
<div id='ControlHost' >
</div>
<script type='text/javascript'>
var parentElement =document.getElementById("ControlHost");
createMySilverlightPlugin("XamlPage.aspx");
</script>
</form>
</body>
這個檔案最重要的地方,是引用createMySilverlightPlugin方法的這一行程式碼,其中設定了XAML檔案的來源為XamlPage.aspx,這個網頁會建立所要呈現的XAML檔案內容,以aspx網頁取代我們所慣用的xaml。
最後,建立用來存取XAML內容的程式碼,輸入以下的內容:
public partial class XamlPage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("xaml/Rect.xaml"));
XmlNamespaceManager namespaceM =
new XmlNamespaceManager(new NameTable());
string dxmlns = "…"; //預設命名空間
string xxmlns = "… …"; //延伸命名空間
namespaceM.AddNamespace("d", dxmlns);
namespaceM.AddNamespace("x", xxmlns);
XmlNode nodeCanvas = xmlDoc.SelectSingleNode(
"//d:Canvas[@x:Name='dCanvas']", namespaceM);
XmlNode node = nodeCanvas.SelectSingleNode(
"//d:Rectangle[@x:Name='rct']", namespaceM);
node.Attributes["Width"].Value = "50";
Response.ContentType = "text/xml";
Response.Write(xmlDoc.OuterXml);
}
}
上述的程式碼首先建立XmlDocument物件,並且載入預先準備好的XAML文件,然後建立所需的命名空間,取得其中用來建立矩形物件的節點,並且修改它的寬度屬性。
這篇文章簡短的討論了ASP.NET程式化控制Silverlight的關鍵步驟,無論如何,還有其他更多的細節與進一步的作法,在即將出版的【Silverlight-ASP.NET與AJAX開發實務】,我們會有完整的探討。
沒有留言:
張貼留言