当前位置:  开发笔记 > 编程语言 > 正文

Silverlight中最大的问题是什么?

如何解决《Silverlight中最大的问题是什么?》经验,为你挑选了4个好方法。

我最近一直在Silverlight工作,我慢慢地发现,尽管开发起来很简单但是有一两个令人烦恼的陷阱隐藏在阴影中.

考虑到其中一些有些难以找到我,我认为将它们列在这里以供其他人受益可能是有用的.我确信我遇到的那些与其他人的经历相比毫无意义,我想尽量避免任何其他令人讨厌或耗时的惊喜.

那么,你有什么?

更新
我已更新此内容以涵盖Silverlight.因此,请提供与响应时相关的版本或列表版本.对于没有版本的所有人,请假设Silverlight 2.0,因为原始问题就是这种情况.



1> Jeff Yates..:

我经历过的两个是:

跨域策略文件

要使Silverlight与托管在其他域上的Web服务一起使用,服务器需要跨域策略文件.这可以采用两种格式:

clientaccesspolicy.xml

crossdomain.xml的

我不能让前者正常工作,但后者工作(Flash使用第二个,而我相信第一个是特定于ASP,虽然我无法让它在ASP.NET 2.0服务器下工作,所以它可能是3.5 -具体).

ComboBox下拉列表调整大小

Silverlight 2.0组合框控件仅在首次显示时对其下拉区域进行一次调整.因此,它的大小基于列表中的初始项.这意味着即使列表增加到200,2个项目也会给你2个项目的高下拉列表.唯一的方法是在每次项目更改时用一个全新的控件替换组合.

请注意,将Height属性或MaxHeight属性设置为导致项目在下拉列表的初始显示中显示在列表中的值将导致缺少垂直滚动条,因此无法访问列表中的项目.我发现的唯一解决方案是使用MinHeight属性至少具有适合所有用途的高度,如果物品超过最小高度则让它更大.

此外,当您调整浏览器窗口的大小时,无论您是否使用MinHeight,然后下拉组合列表或在可见时调整大小,这都会不可逆转地减小下拉列表的大小.

更新

感谢markti,这是一个非常好的解决组合问题的方法.



2> Rob..:

ComboBox很奇怪

Jeff Yates在回答中提到的一件事是ComboBoxes的奇怪之处 - 我个人见过这一点,而且我也看到了另一个非常非常恼人的问题.如果您尝试从按钮的Click事件的事件处理程序更改ComboBox中的项目,您将收到一个我目前无法想到的神秘错误消息.我的解决方案是做与Jeff的解决方案相同的事情 - 删除组合框,构造一个新的组合框,用更改的项目集填充它,然后将其添加回包含的面板.

没有ElementName绑定

Silverlight没有与WPF的ElementName绑定能力相提并论.这篇文章有一个很好的解决方法,对我来说非常好.

不支持鼠标滚轮事件

捕获鼠标滚轮事件没有本机支持.这篇文章提供了一个使用浏览器事件的解决方案.

UserControls上没有卸载事件

有一个Loaded事件,但没有Unloaded - 如果你想从屏幕上删除一个控件并运行一些卸载逻辑,你需要按照自己的方式这样做.我有一个IUnloadable接口,我从需要运行卸载逻辑并在时间正确时手动调用一个方法来导出我的控件.


最后,与WPF相比,这篇文章提供了一些关于Silverlight缺失的信息.



3> Erik Lieben..:

缺少双击事件对我来说是一个.我感到惊讶的是,它不在那里,并一直在intellisense列表:-)通过创建一个黑客解决它,但这不是一个解决方案.



4> Jeff Yates..:

我发现调试支持是非常不稳定的.它曾经为我工作过一段时间,但从那以后,无论我尝试什么.我认为它可能只有在使用Silverlight ASP支持通过ASP.NET 3.5站点调试时才能正常工作.

解决了

问题在于使用谷歌浏览器.由于Google Chrome在其自己的进程中托管Silverlight,因此调试器无法找到它.如果您使用IE7进行调试,它会很好地附加,但如果您使用Chrome进行调试,则必须先手动将其附加到Chrome下的相应Silverlight任务,然后才能运行.

感谢mattmanser提供了解决问题的线索.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有