做到这里,基本上这个系统涉及到的sl知识点也都差不多都包含了,其它模块与功能无外乎是这些功能的重复或细化。当然,真正实现时肯定还会出现很多问题,但现在我无法预估,因此,以此篇来暂停这个项目的功能实现吧,如果以后有机会再继续完善,呵呵。
接下来,功能既然不再继续了,那我们再给项目增加一些“花边”吧,如修改一下初始化的加载页面。默认情况下,SL的加载页面是这样的
想不想换一个样子呢?其实很简单,有一个例子在网上好多次都转了,我也就再搬运一次吧(这让我想起了农夫山泉的广告:我们不生产水,我们只是大自然的搬运工)。
先在承载SL的站点目录下放上如下一个XAML文件,它就是我们的加载界面(SplashScreen.xaml)
< Grid x:Name ="LayoutRoot"
xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable ="d"
d:DesignHeight ="300"
d:DesignWidth ="400" >
< Grid.Background >
< RadialGradientBrush >
< RadialGradientBrush.RelativeTransform >
< TransformGroup >
< ScaleTransform CenterX ="0.5"
CenterY ="0.5"
ScaleX ="2"
ScaleY ="3" />
< TranslateTransform X ="0.5"
Y ="0.5" />
</ TransformGroup >
</ RadialGradientBrush.RelativeTransform >
< GradientStop Color ="#FFF26300"
Offset ="0.282" />
< GradientStop Color ="#FFE29360"
Offset ="1" />
</ RadialGradientBrush >
</ Grid.Background >
< Grid.RowDefinitions >
< RowDefinition Height ="*" />
< RowDefinition Height ="Auto" />
</ Grid.RowDefinitions >
< Grid Grid.Column ="0"
Width ="300"
Height ="300"
Grid.Row ="0"
HorizontalAlignment ="Center"
VerticalAlignment ="Center" >
< Ellipse Width ="200"
Height ="200"
HorizontalAlignment ="Center"
VerticalAlignment ="Center"
Margin ="0,0,0,0"
Fill ="#FFF4A168"
Opacity ="0.8" />
< Ellipse Width ="180"
Height ="180"
HorizontalAlignment ="Center"
VerticalAlignment ="Center"
Margin ="0,0,0,0"
Fill ="#FFF26300"
Opacity ="0.5" />
< TextBlock x:Name ="textBlock1"
TextWrapping ="Wrap"
FontSize ="110"
FontFamily ="Trebuchet MS"
Foreground ="White"
Text ="100"
Opacity ="0.8"
HorizontalAlignment ="Center"
VerticalAlignment ="Center" />
</ Grid >
< Grid Grid.Row ="1"
Margin ="0,0,0,50" >
< Rectangle Height ="5"
Margin ="0,10"
HorizontalAlignment ="Stretch" >
< Rectangle.Fill >
< LinearGradientBrush EndPoint ="0.5,1"
StartPoint ="0.5,0" >
< GradientStop Color ="#FFBBD2E8"
Offset ="0" />
</ LinearGradientBrush >
</ Rectangle.Fill >
</ Rectangle >
< Rectangle Height ="8"
HorizontalAlignment ="Stretch" >
< Rectangle.Fill >
< LinearGradientBrush EndPoint ="0.5,1"
StartPoint ="0.5,0" >
< GradientStop Color ="#FF6BAAE8"
Offset ="0" />
< GradientStop Color ="#FF216AB1"
Offset ="1" />
</ LinearGradientBrush >
</ Rectangle.Fill >
< Rectangle.RenderTransform >
< TransformGroup >
< ScaleTransform ScaleX ="1"
ScaleY ="1"
x:Name ="scaleTransform" />
< SkewTransform AngleX ="0"
AngleY ="0" />
< RotateTransform Angle ="0" />
< TranslateTransform X ="0"
Y ="0"
x:Name ="translateTransform" />
</ TransformGroup >
</ Rectangle.RenderTransform >
</ Rectangle >
</ Grid >
</ Grid >
然后,在这个站点项目加再加入一个Js文件,如下
SplashScreen.js
function onSourceDownloadProgressChanged(sender, eventArgs) {
sender.findName( " textBlock1 " ).Text = Math.round((eventArgs.progress * 100 ), 0 ).toString();
sender.findName( " scaleTransform " ).ScaleX = eventArgs.progress;
}
再找到加载sl的页面,例如FT-WebFirst-SLTestPage.aspx页面,在其中的sl标记内添加一这个js文件的引用,并在sl的object内增加两个属性设置,如
< param name ="splashscreensource" value ="SplashScreen.xaml" />
< param name ="onSourceDownloadProgressChanged" value ="onSourceDownloadProgressChanged" />
那么到这,就应该猜到它的运行原理了吧,使用js的onSourceDownloadProgressChanged函数与SplashScreen.xaml进行通讯,以便在下载sl的过程中显示进度指示。
不过在这样做了之后,再F5编译的时候可能会通不过,因为站点项目是无法解析XAML,有两种办法:
添加相应的引用 以使XAML可以被识别。或者,干脆就把这个文件从项目中排除吧(注意可不是删除)。
现在我们运行起来看看效果吧,呃~!可能还看不出来,因为我们的项目太小了,很快就加载完了。那我们就手动把项目加大一点吧,添加一个电影啥的(别说你的电脑上没有电影),然后把它设置为“内容”就行了,这样就会在生成时把这个大的“内容”打包进xap中以便客户端浏览器进行下载,现在再运行看看,可以看到我们更新后的加载页面了
呼~想抓这张图还真不容易啊,呵呵!对了,回头记得把那个大家伙去掉,不然你每次生成的时候都要有一个复制过程,很慢啊~!