【发布时间】:2009-03-11 04:51:31
【问题描述】:
我最近开始使用 Silverlight,并立即注意到 Silverlight BCL 与完整的 .Net 和 WPF 之间的区别。对于其中一些人,我发现其他开发人员在网上发布了很好的解决方案,而其他人则更复杂。您对 Silverlight 类库中缺少哪些功能/类感到惊讶/失望,您采取了哪些措施来解决它们?
我的一些是:
- 无事件触发动画 - 我创建了一个带有静态方法的辅助类,用于将我用过的每种类型的动画附加到共享库中的情节提要中,并在应用程序级别创建带有静态方法的类来放置如果在 WPF 中工作,它们会像在 XAML 中一样。到目前为止,这是一个很好的解决方案,可以让我的动画井井有条,并让逻辑脱离事件处理程序。
- ScrollViewer 不支持鼠标滚轮 - Adam Cooper 创建了一个出色的类库,添加了此功能,在任何 Silverlight 项目中实现所需的代码最少。他的网站目前似乎关闭了,所以这里有一个 Tim Heuer 博客的链接,其中解释了它并提供了指向它的链接(所以当他的网站重新上线时,它将可用)。 Add mouse wheel support to ScrollViewer in Silverlight
-
SortedDictionary<T, K>不见了。我发现 this post 包含一个实现,但我自己并没有最终使用它。 - ResourceDictionary.MergedDictionaries 不可用 - 再次...找到实现此功能并发布源代码的人,但它似乎有点复杂。我可能会完成它一点点,但还没有这样做。 MergedDictionaries in Silverlight
- ZIndex 附加属性仅在 Canvas 对象上可用。我将其作为一个问题发布在 SO 上,如果需要的话,有人提出了一个很好的建议,即将我的容器包装在一个集合中。感觉有点草率,但你必须做你必须做的。我的容器嵌套了三层,因此我可能需要将它们全部变形到 Canvas 对象中,并为每个事件设置 Canvas.ZIndex 三次。丑得像罪,但如果这是唯一的方法,那就这样吧。
我很想看看更有经验的 Silverlight 开发人员遇到了哪些其他常见问题,以及您为解决这些问题所做的工作。
【问题讨论】:
-
您现在可以删除 (4),因为它已被添加
-
您也可以删除 2,因为 Silverlight 4 对以下内容具有原生鼠标滚轮支持:TextBox、ComboBox、Calendar、DatePicker 和 ScrollViewer(DataGrid 和 ListBox 也是如此)。您对 5) ZIndex 绝对确定吗?您绝对可以在输入 Canvas.ZIndex = 123 的网格中使用它。
-
也许我们应该在每个答案中添加所引用的 Silverlight 版本。这个话题非常有价值,但如果读者看不到正在讨论的版本,它会随着时间的推移很快失去价值。
标签: .net wpf silverlight xaml