接下来,创建javascript。它将探测Silverlight插件并创建一个委托,然后创建在.htm文件中使用的Silverlight对象。当然,你也可以直接在刚刚创建的html页面中直接这样做。我们把这个文件称为xamlFunctions.js:
function createNavMenu()
{
Silverlight.createObjectEx({
source: "hello.xaml",
parentElement: document.getElementById("navMenuSL"),
id: "slNavMeu",
properties: {
width: "100%",
height: "100%",
inplaceInstallPrompt:true,
version: "3.0"
}
});
}
if (!window.Silverlight)
window.Silverlight = {};
Silverlight.createDelegate = function(instance, method) {
return function() {
return method.apply(instance, arguments);
}
}
{
Silverlight.createObjectEx({
source: "hello.xaml",
parentElement: document.getElementById("navMenuSL"),
id: "slNavMeu",
properties: {
width: "100%",
height: "100%",
inplaceInstallPrompt:true,
version: "3.0"
}
});
}
if (!window.Silverlight)
window.Silverlight = {};
Silverlight.createDelegate = function(instance, method) {
return function() {
return method.apply(instance, arguments);
}
}
最后,创建XAML文件,并在以上代码中作为“源”来引用它。一会儿它将变成一个PHP文件,来方便提供某些动态菜单选项。另外正如我们所提到的,这些代码通常使用一个设计工具来创建。手动处理XAML代码是一件非常复杂的事情。一方面调试非常困难,错误的原因可能是我们的XAML中存在一个空格;而且供我们使用的控件将非常有限。许多控件目前处于测试阶段,尤其是那些在版本3和版本4中增加的空间更是如此,需要程序集来实例化。不过不用担心,通过下面的例子可以让我们有基础创建更复杂的东西。我们把这个文件称为hello.xaml:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="navMenu_Grid">
<Canvas HorizontalAlignment="Left" Margin="0,0,0,0" Width="300" Height="400" VerticalAlignment="Top">
<Rectangle x:Name="Rect0" Fill="#FF5A2191" Height="40" Canvas.Left="20" RadiusY="15" RadiusX="15" Opacity=".5" Stroke="Black" Canvas.Top="0" Width="150" >
</Rectangle>
<TextBlock Foreground="#FFF7F1F1" Canvas.Top="10" Canvas.Left="45" Text="Hello, Silverlight!" />
</Canvas>
</Grid>
<Canvas HorizontalAlignment="Left" Margin="0,0,0,0" Width="300" Height="400" VerticalAlignment="Top">
<Rectangle x:Name="Rect0" Fill="#FF5A2191" Height="40" Canvas.Left="20" RadiusY="15" RadiusX="15" Opacity=".5" Stroke="Black" Canvas.Top="0" Width="150" >
</Rectangle>
<TextBlock Foreground="#FFF7F1F1" Canvas.Top="10" Canvas.Left="45" Text="Hello, Silverlight!" />
</Canvas>
</Grid>