c# – 什么时候可以将2个视图模型组合成1而不是使用某种形式的viewmodel-viewmodel通信?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 什么时候可以将2个视图模型组合成1而不是使用某种形式的viewmodel-viewmodel通信?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1890字,纯文字阅读大概需要3分钟。
内容图文
![c# – 什么时候可以将2个视图模型组合成1而不是使用某种形式的viewmodel-viewmodel通信?](/upload/InfoBanner/zyjiaocheng/791/5308414bd5b24e21a84bd4341015f512.jpg)
我有2个视图模型,每个视图模型都有自己的视图.
第一个视图模型有3个属性由视图显示:
PolicyProvider
PolicyType
PolicyNumber
第二个视图模型的视图只显示1个属性:
TypeOfInvestmentFund
PolicyType和TypeOfInvestmentFund之间存在1对多的关系.
这两个视图模型及其视图都显示为父窗体内的用户控件.
TypeOfInvestmentFund的可用选项取决于在另一个视图中选择的PolicyType.
对我来说,感觉就像这两个视图模型可以结合起来,因为
a)它们显然有些耦合
b)控件既小又简单,连接它们不会产生复杂且难以管理的对象.
然而,这些数据是相当无关的;用户仍然希望数据在表单的单独部分中可见(因此放在单独的视图上).
我个人认为,将这两个视图模型相结合并具有两个单独的视图连接到它以显示它的不同部分比管理两个对象之间的通信要少得多.
然而,我可以使用Prism Event Aggregator创建松散耦合的事件,虽然我从未这样做过,但可能管理起来并不多,并且保持这两个视图模型分离会保留关注点.此外,如果在开发中稍后出现其他控件也需要此信息,我无法继续吸收它们,因此在此阶段启动事件聚合器将阻止返工,因为事件可用于订阅.仅仅结合视图模型还有更多工作要做.
这两个中哪一个“更正确”?我理解它是一个判断电话,但我无法决定,所以我正在寻找意见来帮助我下定决心.
解决方法:
ViewModel反映了View,而不是Data
如果您的View显示策略和动态TypeOfInvestmentFund,那么您的ViewModel应该具有这两个对象.
就个人而言,我希望我的ViewModel将一个Policy模型公开给View,并让PolicyModel包含Provider,Type,Number和InvestmentFund的属性.
然后,我可以使用DataTemplates告诉WPF如何绘制每个对象.这是一个粗略的例子,概述了如何做到这一点:
<DataTemplate DataType="{x:Type local:PolicyModel}">
<StackPanel>
<local:PolicyView />
<ContentControl Content="{Binding InvestmentFund}" />
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type local:InvestmentFundA}">
<local:InvestmentFundA />
</DataTemplate>
<DataTemplate DataType="{x:Type local:InvestmentFundB}">
<local:InvestmentFundB />
</DataTemplate>
编辑
如果Policy和TypeOfInvestment是两个独立的对象,我会将它们的模型分开,并将它们放在同一个ViewModel中.模型用于建模数据,而ViewModel用于建模View
内容总结
以上是互联网集市为您收集整理的c# – 什么时候可以将2个视图模型组合成1而不是使用某种形式的viewmodel-viewmodel通信?全部内容,希望文章能够帮你解决c# – 什么时候可以将2个视图模型组合成1而不是使用某种形式的viewmodel-viewmodel通信?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。