好的,为了给一点背景知识,我在大约3年前学习了WPF,并且已经合理地了解了自从各种不同版本发生的事情。我在几个项目上查看(并实现了)MVVM,仔细研究了像Prism这样的框架,所以我觉得我对框架的大多数领域非常精通。我还简要介绍了几个小型的Silverlight 2.0项目。
我的问题是,我即将在一家新公司开始Silverlight工作,虽然我很自在能够很好地完成工作,但我觉得我的WPF知识可能会给我带来一些问题。我已经查看了WPF/Silverlight guidance white-paper的codeplex,这是非常好的,但非常有帮助,但它突出了差异,但仍然让我想知道如何解决这些差异。
例如,我知道DataTriggers
和MultiBindings
以及其他一些东西一样缺失DataTrigger
。我有兴趣阅读的不是本身的差异,而是你如何得到这些差异或其他模式在Silverlight中有用。如果我需要 {{1}}怎么办?显然我的设计应该考虑到这些因素。
所以,问题是,如果你经历了这种转变,哪些差异会给你造成最大的麻烦,你是如何解决这个问题的?
答案 0 :(得分:3)
首先,虽然这可以追溯到Silverlight 3,但本白皮书详细介绍了WPF和Silverlight之间的差异:
Microsoft WPF-Silverlight差异白皮书 http://wpfslguidance.codeplex.com/releases/view/30311
这是熟悉差异的第一步。
您可能还想看一下Prism项目。该项目的目标之一是在Silverlight和WPF之间构建一组可互操作的功能,这样您就可以构建针对两个平台并重用大部分代码的企业应用程序。熟悉项目也有助于突出差异:
http://compositewpf.codeplex.com/
最后,虽然Silverlight可能没有数据触发器,但您可以使用行为和触发器等功能组合:
http://www.silverlightshow.net/items/Behaviors-and-Triggers-in-Silverlight-3.aspx
视觉状态管理器(VSM):
http://timheuer.com/blog/archive/2008/06/04/silverlight-introduces-visual-state-manager-vsm.aspx
完成你需要的大部分工作。
答案 1 :(得分:2)
为我们的WPF应用程序本身提供Silverlight端口,以下是我们遇到的两个“痛点”。
希望这有帮助。
[现在Silverlight 4.0有一个稳定的版本,我们在过去的几个版本中有一些Visual Studio打嗝,这些版本会自行解决。 (我们坚持使用Silverlight 3.0,并在3月中旬的某个地方跳转到SL 4.0测试版和最终版本)。
N.B。 :我试图保持抽象的方式,以揭示客户的身份。
答案 2 :(得分:2)
Silverlight不支持所有这些,您必须解决它们。 每个案例都需要自己判断如何“填补空白”
对于触发器部分,唯一的解决方案是使用VisualStateManger。 以下文章提供了一个很好的示例,说明如何从触发器转换到VSM:http://blogs.msdn.com/b/wpfsdk/archive/2009/02/27/the-visualstatemanager-and-triggers.aspx
接下来,OnApplyTemplate以不同的顺序触发,这可能会影响您可能创建的任何自定义控件或用户控件。
<强> WPF:强>
<强> Silverlight的:强>
当然,微软有一篇关于它的文章,称为“WPF兼容性”,并对WPF和Silverlight之间的差异和变化进行了更全面的概述:
http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx
希望这有帮助
答案 3 :(得分:0)
Silverlight强迫您对设计模式进行一些更改,如果在整个软件中普遍存在,则可能会使代码重用变得毫无意义。
例如,缺少数据模板选择器 - 我发现这非常震惊。