【IT168 专稿】我喜欢Silverlight,我写过很多关于Silverlight的文章,也在不同场合做过关于Silverlight的演讲,但很多人对Silverlight仍然很陌生,或仅仅是将它作为一个玩具,如果你刚好属于这一类人,那么你应该继续往下读,本文列举的内容是我开始用Silverlight做开发以来收集起来的,如果你打算做一名全职的Silverlight开发人员,那更应该将这些内容熟记于心,放心,我不会用MVVM,Prism或MEF来吓你。
1、下图中高亮显示的代码行表示的是MIME类型,而不是Silverlight的运行时版本号,许多开发人员一开始都会很困惑,因为按照惯例,他们认为这应该是Silverlight的版本号,如Silverlight 4。
图 1 一个Silverlight托管应用的HTML/ASPX标记
2、不能在Silverlight中使用.GIF图片,如果你要在Silverlight应用程序中插入图片,最好使用.PNG文件,如果你非要使用.GIF文件,建议你使用.NET图像工具库Silverlight版本,也有很多人构建了Web服务,将.GIF文件转换成.PNG文件,我个人建议你还是使用诸如Paint.NET等工具将图片转换成.PNG格式。
图 2 Silverlight不接受.GIF图片
3、如果用户没有安装Silverlight 4插件,可以在HTML或ASPX文件中使用下图高亮显示的代码提醒用户去下载。
图 3 在HTML或ASPX代码中插入Silverlight下载链接
如果你将链接修改为:
<img src="http://go.microsoft.com/fwlink/?LinkID=161376" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
用户将总是会下载到Silverlight运行时的最新版本,新版本会向后兼容旧版本。
4、Silverlight中所有数据访问都是异步的,下面的代码将不会工作:
string strReturn = srv.GetSomeValue();
txtValue.Text = strReturn;
下面是在Silverlight中调用WCF服务的正确做法:
{
InitializeComponent();
Service1Client client = new Service1Client();
client.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(client_DoWorkCompleted);
client.DoWorkAsync();
}
void client_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
{
MessageBox.Show(e.Result);
}