浅谈MVVM的优缺点

优点:

  • 分离视图(View)和模型(Model),降低代码耦合,提⾼视图或者逻辑的重⽤性: ⽐如视图(View)可以独⽴于Model变化和修改,⼀个ViewModel可以绑定不同的"View"上,当View变化的时候Model不可以不变,当Model变化的时候View也可以不变。你可以把⼀些视图逻辑放在⼀个ViewModel⾥⾯,让很多view重⽤这段视图逻辑
  • 提⾼可测试性: ViewModel的存在可以帮助开发者更好地编写测试代码
  • ⾃动更新dom: 利⽤双向绑定,数据更新后视图⾃动更新,让开发者从繁琐的⼿动dom中解放

缺点:

  • Bug很难被调试: 因为使⽤双向绑定的模式,当你看到界⾯异常了,有可能是你View的代码有Bug,也可能是Model的代码有问题。数据绑定使得⼀个位置的Bug被快速传递到别的位置,要定位原始出问题的地⽅就变得不那么容易了。另外,数据绑定的声明是指令式地写在View的模版当中的,这些内容是没办法去打断点debug的
  • ⼀个⼤的模块中model也会很⼤,虽然使⽤⽅便了也很容易保证了数据的⼀致性,当时⻓期持有,不释放内存就造成了花费更多的内存
  • 对于⼤型的图形应⽤程序,视图状态较多,ViewModel的构建和维护的成本都会⽐较⾼。
  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和引用提供了两个用于绑定UI的转换器类(FontConverters和ColorConverters),这些转换器类实现了IValueConverter接口。在MVVM模式中,这些转换器类可以用于将数据模型中的属性转换成UI界面上的可视化效果,比如颜色状态显示或文字内容转换等。 在c#串口调试工具中使用MVVM模式,可以将串口的打开和关闭状态绑定到UI界面上。通过使用FontConverters类,可以根据串口的状态将按钮的文字内容转换为"打开串口"或"关闭串口"。同时,使用ColorConverters类可以根据串口的状态将按钮的背景颜色转换为不同的状态。 引用给出了一个使用了自定义字体的TextBlock控件的示例。在该示例中,通过设置FontFamily属性为"pack://application:,,,/Font/#iconfont",可以引用项目中的iconfont字体文件。这样可以实现在UI界面上显示特定的图标。 在串口调试工具中,可以借助MVVM模式和这些转换器类来实现串口状态的绑定和显示。通过绑定串口状态属性到UI界面上的按钮和控件,可以实现串口的打开和关闭操作,并实时显示串口状态的变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【无标题】C#串口调试工具 (WPF/MVVM结构完整示例版)](https://blog.csdn.net/weixin_44674885/article/details/123389999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值