惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
T
Tailwind CSS Blog
月光博客
月光博客
爱范儿
爱范儿
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
GbyAI
GbyAI
腾讯CDC
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
U
Unit 42
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
N
Netflix TechBlog - Medium
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
L
LangChain Blog

博客园 - hades

python + selenium webdriver 自动化测试 之 环境异常处理 (持续更新) 推荐一个娱乐化学习python的网站 Silverlight 导出Excel Silverlight Control(三)DataGrid Silverlight Control(二)ListBox Silverlight 中使用 WCF RIA Service Silverlight Control(六)GroupBox Silverlight Control(五)TimePicker Silverlight Chart 综合运用(样式、多轴、数据绑定、点状图、线形图、DataGrid、Chart导出综合运用) C# 关闭其他程序窗口、进程 Silverlight Control(四)Chart (1) 初体验 Silverlight 如何导出图片 Silverlight Control(一)ComboBox 数据绑定、自定义、取值 Silverlight Style (二) 自定义样式在后台代码中应用 Silverlight Style (一) 如何在页面应用样式 Silverlight Binding (One Time,One Way,Two Way) ASP.NET项目中不能有重名的文件夹 给部队做项目开发的一点想法 企业工作流的定制(SPS实现)
在Silverlight中请谨慎使用MVVM
hades · 2010-09-21 · via 博客园 - hades

在Silverlight中请谨慎使用MVVM

1.设计时的支持问题.

  当VM中需要引用到webservice返回数据时,在VS的设计界面会出现如图bug,在设计时非常不方便。

2.导航问题.

  无法在MVVM中实现导航,很多案例曲线救国,要么改用HyperlinkButton,要么通过加载第三方dll实现导航。

3.大量的代码.

  1) Properties  可以这样理解View和ViewModel之间的关系,View中需要呈现多少特性,ViewModel就必须有多少个对应的Properties。这些Properties将与View绑定,而且在绑定这些Properties时必须小心,它们是没有智能感应的,就算写错了,也不会报错。

  2) 同样要在ViewModel中实现大量的方法。在逻辑处理方面的代码量等同于传统模式中的后台代码量。

  3) 为了处理某些特殊事件,还需要额外编码。

  实际上MVVM中的代码量是要多于传统的后台编码方式。而且View中表现的信息越多,需要多写的代码量也就越多。毫无疑问会影响到项目进度。所以,有些地方能更巧妙,更方便解决问题的时候,请不要执着与某种模式,毕竟我们是为了完成产品,而不是为了完成模式。

4. 异步处理.

  由于Silverlight和WPF不同,在Silverlight中大量的是异步操作,因此也必须谨慎处理。

  在我的项目中,我们暂时只在Security这里运用了 MVVM,我们发现通过绑定方式可以很方便的将权限与业务逻辑分开。

  比如,对某个按钮的isEnable状态,我们在业务逻辑中进行了控制。如果需要加入权限管理,传统的处理方式通常会通过增加标识等方法使得业务逻辑与权限控制能匹配起来,而继承ICommand的代理事件中的 CanExecute 方法很轻松就能将这两者分开。当然这只是很小的一个案例,MVVM在解耦UI和业务逻辑以及数据方面的作用是很大的。不过,还是开篇的那句话,在Silverlight中请谨慎使用MVVM。

  以上纯属个人意见,若有不足还望指正。