Silverlight 2 Beta 2升级手记
这一天都是在做Silverlight 2 Beta 2的升级,在Debug的时候碰到很多的问题,跟大家分享。
本文逻辑
阅读参考(如已经有了解,可跳过) -> 请先备份 -> 升级碰到的阻碍 -> 结束语
参考(如已经有了解,可跳过))
Breaking Changes Between Beta 1 and Beta 2
[译]Silverlight 2 Beta 2 新特性详解 :)
请先备份
请事先备份数据, 如果有版本控制工具,也请记得离线工作
升级碰到的阻碍
1. 再升级前请慎重考虑是不是要升级,Silverlight 2 beta 2的几个新特性对于您来说有哪么重要吗?VisualStateManager, Cross-Domain Policy等等, 先了解再等到RTM也是不错的选择哦,毕竟没有非常重要的新特性,比如打印,HOHO~~
2. XAML文件上的修改,一些属性被去掉, ToolTip被修改成ToolTipService.ToolTip
比如 FontSize, FontFamily等等
3. Control.InitializeFromXaml 不再可用
据我所知,有两种替代方法,欢迎各位补充
a. Application.LoadComponent
参考: http://silverlight.net/forums/t/17513.aspx
b. XAMLReader.Load(string xaml)
4. 一些控件从System.Windows.Controls移到System.Windows中
5. DialogResult现在是Internal不再可用
6. WatermarkTextBox不再可用,可以选择替换,或者下载Silverlight 2Beta1 Controls
地址: Download details: Source Code for Silverlight 2 Beta 1 Controls
7. Silverlight.js修改过了,所以部署时需要拷贝,另外如果碰到运行显示安装Silverlight 2 的情况,请修改运行该Silverlight的页面将html中的object里的type修改掉原来是 application/x-silverlight-2-b1
8. SetValue(Canvas.TopProperty, value)这样的方法可能导致错误,或者 this.Width = value;
因为value可能是NaN的数据,这样设置的属性并不正确,而因为Silverlight本身没有调试工具,XAML文件出错但也没法调试(我还不知道怎么调试XAML :( ),所以如果数据并不能显示,请检查这里是不是有错, 有点像过去没有Javascript调试工具时候的体验了。
9. MouseLeftButtonDown/UP 不再触发这样的问题
在Beta2里修改了对于事件的处理机制,如果在本类中设置了handler = true,再使用这个类时不再触发这个事件,比如ListBoxItem 和 ScrollViewer
ListBoxItem 对于MouseLeftButtonDown事件的处理
2 {
3 if (!e.Handled)
4 {
5 e.Handled = true;
6 if (base.Focus() && (this.ParentListBox != null))
7 {
8 this.ParentListBox.NotifyListItemClicked(this);
9 }
10 }
11 }
12
ScrollViwer
2{
3 if (!e.Handled && base.Focus())
4 {
5 e.Handled = true;
6 }
7}
8
9
这样做之后咱们只能手动的给他们添加事件支持了
10. 还有一些控件比如 DataGrid, MultiSacleImage并没有使用,不会造成影响
结束语
做升级记录的时候也只是大概的记了一下,有的部分可能也忘记了,不能详述实为抱歉,整个升级过程中,除了原来的XAML动态加载方式和Silverlight显示不正常外,并没有碰到多少卡壳的地方。祝各位想升级的朋友升级顺利, 同时,欢迎补充。 :)