现在所有基于Silverlight 2.0开发的应用程序都会被强制升级到 silverlight 3.0插件 ,这个在程序开发过程中本不可避免,但在升级中却遇到了最让人头痛的问题,3.0中有些地方的改进并不能保证对2.0应用程序的完全兼容,这给基于商业应用的网站带来的无疑是一场灾难。
唉,贸然使用非开源的新技术确实是需要付出代价的。。本文就此列出所有从2.0 到 3.0 版本升级过程中会对旧版本造成影响的所有注意的地方,谨此提醒大家一句,不要贸然使用非开源的框架,否则你的程序并不控制在自己手里,听说XP里不是发现了很多Hacker 么。。
1. 自 Silverlight 2 以来的重大更改
- 1.1 System.Web.Silverlight.dll 已从 Silverlight SDK 中删除
- 1.2 Silverlight 应用程序现在响应浏览器缩放
- 1.3 弹出项 Tab 键更改
- 1.4 ComboBox 弹出项剪切已修复
- 1.5 在 PopupRenderTransform 更改后 Silverlight 始终重绘弹出项
- 1.6 ContentPresenter.Content = "string" 不再更改 ContentTemplate 属性
- 1.7 在使用空的 ContentTemplate 时,ContentControl 现在将忽略内容
- 1.8 设置 ContentControl.Content 不会导致不需要的 OnApplyTemplate 调用
- 1.9 在 ItemsSource 设置为具有 typeconverter 的枚举时,ComboBox 和 ContentControl 现在显示字符串,而非数字
- 1.10 没有所选项的 ComboBox 采用额外的击键来选择第二个项
- 1.11 HorizontalScrollBarVisibility 和 VerticalScrollBarVisibility 现在可以在 ComboBox 和 ListBox 的样式中设置
- 1.12 ListBoxItem.HorizontalContentAlignment 现在受到重视
- 1.13 ListBoxItem.Style 现在优先于 ListBox.ItemContainerStyle
- 1.14 在 ListBox 内使用 Tab 键定位现在将焦点移到下一个控件,而非下一个 ListBox 项
- 1.15 从 PasswordBox/TextBox 中删除了 TemplatePart 声明
- 1.16 TextBox 中的 TextAlignment 现在相对于文档而非 TextBox 工作
- 1.17 只读 TextBox 的默认颜色已更改
- 1.18 ENTER 键现在注重 Button.ClickMode,后者默认为 Release (KeyUp)
- 1.19 Slider 控件的命中测试区域现在与其可见部分匹配
- 1.20 clientaccesspolicy.xml 内的格式错误的 URL 现在导致该 URL 被忽略,而非文件的其余部分被忽略
- 1.21 错误修复:更改 Opacity 没有始终导致重绘
- 1.22 DataBinding 要求属性 setter 是公共的
- 1.23 不允许在 SetBinding() 后更改 Binding.Path
2 . 自 Silverlight 3 Beta 以来的重大更改
- 2.1 DockPanel、WrapPanel、Expander、HeaderedContentControl、Viewbox、DataForm 迁移到了 Silverlight 工具包
- 2.2 AutoCompleteBox:成员和类型重命名
- 2.3 AutoCompleteBox 的新模板部件:Selector, typeof(Selector)
- 2.4 AutoCompleteBox.TryGetSelectionAdapter(object o) 现在是 GetSelectionAdapterPart()
- 2.5 AutoCompleteBox:ToggleButton 类型的 DropDownToggle 模板部件已删除
- 2.6 DataGrid RowGroupExpanding 和 RowGroupCollapsing 事件已删除
- 2.7 DataGrid.SortDescriptions 和 GroupDescriptions 属性已删除
- 2.8 用 ValidationSummary 而非 ListBox 显示 DataGrid 实体级别验证错误
- 2.9 DataForm 更改
- 2.10 针对 System.ComponentModel.dll 和 DataPager 的重大更改
- 2.11 PagedCollectionView
- 2.12 DataPagerAutomationPeer
- 2.13 BindableAttribute 和 BindingDirection 已删除
- 2.14 对 ValidationAttribute 的更改
- 2.15 [CustomValidation] 方法的签名已更改
- 2.16 框架仅支持导航到页面
- 2.17 与 UriMapper 相关的框架重大更改
- 2.18 效果文件 (.ps) 不再作为 Content 加载
- 2.19 WriteableBitmap 更改
- 2.20 RenderOptions.TextRenderingOptions 现在是 TextOptions.TextHintingMode
- 2.21 透明平台扩展不在 Microsoft.com 上承载
- 2.22 浏览器外 API 名称更改
- 2.23 ExecutionStates.DetachedUpdatesAvailable 已删除
- 2.24 Icon.Size 类型更改并且 <Icon Size="..."> 格式已更改
- 2.25 XmlConvert.IsNCNameSurrogatePair() 和 IsStartNCNameSurrogatePair() 已删除
- 2.26 SaveFileDialog.File -> SaveFileDialog.SafeFileName
- 2.27 DataAnnotations.Validator 重大更改
3 . 升级重大更改
- 3.1 OpenFileDialog.ShowDialog() 现在只能从用户启动的事件打开
- 3.2 Tab 键定位处理和关联的回调从异步更改为同步
- 3.3 弹出项内的鼠标事件现在提供相对于弹出项的位置,而非相对于整个应用程序的位置
- 3.4 弹出项现在只能具有一个父级
- 3.5 弹出项内的名称范围现在正常工作
- 3.6 FindElementsInHostCoordinates 现在搜索弹出项
- 3.7 删除了与在 ItemsControl 中替换项相关联的多余事件
- 3.8 ScrollViewer 现在将滚动条位置固定到 ScrollableWidth/ScrollableHeight
- 3.9 在设置了 Stretch 并且 Height 和/或 Width 未设置时,矩形和椭圆现在出现
- 3.10 TextBlock、TextBox 和 PasswordBox 的宽度现在向上舍入
- 3.11 textblock.FontFamily = null 引发 ArgumentNullException
- 3.12 空格不再在模板内的 Run 元素之间呈现
- 3.13 RadioButton.GroupName 现在在模板外搜索 RadioButtons
- 3.14 ComboBox 内容现在令 IsHitTestVisible="false"
- 3.15 TextBox 现在注重 Opacity 属性
- 3.16 具有空参数的 FrameworkElementAutomationPeer ctor 引发 NullReferenceException
- 3.17 HyperlinkButton 现在将导航整个窗口,而不只是 Silverlight 位于其中的 IFRAME
- 3.18 更正了在 Silverlight v2+ 应用程序不具有 XAP 文件扩展名时使用的基 URI
- 3.19 Application.Current.Host.Source 现在返回绝对 URL,甚至在 .xap URL 具有查询字符串时也是如此
- 3.20 ResourceDictionary 枚举错误已修复
- 3.21 ReadOnlyObservableCollection 已从 System.Windows.Controls.Data.dll 迁移到 System.Windows.dll
- 3.22 DataGridEndingEditEventArgs 已从 Silverlight SDK 中删除
- 3.23 PollingDuplexHttpBinding 更改
- 3.24 与删除事件处理程序有关的错误修复
- 3.25 错误修复:允许 <Cursors>,而非 <Cursor>
- 3.26 XAML 中的自定义附加属性要求 xmlns 为前缀
- 3.27 错误修复:子类控制可能会加载错误的资源
- 3.28 错误修复:在路径上的叶对象为空时不调用 ValueConverter
- 3.32 指向 .xap 外的资源的相对 URL 现在相对于 .xap 文件,而非 HTML 页
- 3.33 不再支持在 SetBinding() 后设置 Binding 属性
- 3.34 ContentPresenter 的子级现在只能具有一个父级
- 3.35 Thumb 控件现在相对于绝对位置计算拖放,而非相对于其父级计算拖放
- 3.36 DataGrid 不再默认选择第一项