最近我偶然发现了一些叫做Prism的东西.运行该项目的微软将其描述为
WPF和Silverlight中的复合应用程序指南.
即使在阅读了更详细的描述之后,我也几乎不知道它实际上是什么,我害怕.
我希望有人可以给我一个明确的简洁解释,说明Prism实际上是什么以及为什么我应该学习它.我已经成为WPF开发人员几年了,使用MVVM我的公平份额,并且最近遇到过使用Prism的人,但个人感觉有点不在这里.
特别是,我想知道以下几点:
Prism字面上只是(或主要)是MSDN网站上的小册子吗?它是否包含任何库,如果是这样的话究竟是什么?
Prism是MVVM框架吗?我应该将它作为"官方Microsoft MVVM框架"而不是其他人或我自己的吗?
它是否提供依赖注入?它是否与MEF有关?
作为WPF/Silverlight开发人员,我应该知道Prism的作用.
官方网站
用品
播客
视频广播
dnrTV
第9频道
你对Prism的其他资源有什么建议吗?
我现在在WPF中有点过时,并且有兴趣听到人们对最新版本的Prism(我之前使用过几个版本)和MVVM Light + Unity方法(我从未做过)的看法 - 体面的例子URL会很好).
我的项目将是一个很大的项目,包括由几个开发人员编写的多个模块 还有资金引入第三方控制套件,以便使用其中一个花哨的Docking/Workspace布局管理器建立一个漂亮的工作区(我知道Prism区域的一些比其他区域更好).
如果你现在从头开始一个项目,你会选择什么?为什么?有关特定推荐体系结构模式的详细信息将非常有用(例如,自动发现模块dll?注入日志记录服务?).基本上,任何想法和建议都会很好.我想进行一次很好的讨论.也许完全有另一个方向你建议进去?我非常处于研究阶段,并希望尽可能多的输入.
我把它放在这里因为我认为它会比Prism/MVVM Light论坛获得更少的偏见,但是,如果有更适合这个问题的地方,请指出我的方向.
请帮忙 - 我迷路了!
我正在编写一个小型桌面应用程序,它有一些控件和一些屏幕.这应该稍后与一个小网站集成,也有一些屏幕.我们的想法是让用户编辑视频并选择图像,然后与朋友分享他们的结果.
桌面应用程序使用的是C#WPF,即网站 - ASP.Net MVC.
我读到使用MVVM可以更轻松地将应用程序增加到几个屏幕.所以我开始搜索并发现了Caliburn.Micro和MVVM.Light.我已经下载了一些教程,但正如我准备深入研究材料一样,我在SO上找到了.那里还有Prism,MEF,Unity,ReactiveUI - 这太过分了!
我学习新东西很糟糕 - 学习WPF和ASP.Net MVC花了我很多年的时间.我不想研究很多新材料,只是为了稍后发现它不相关.而且我没有一位建筑师来指导我.
所以我的问题是:你能否对这些框架和技术进行透视,并建议我应该把重点放在研究和使用上(特别是后来用于Windows 8的内容)?
有没有人有任何使用MVVM(Prism)显示窗口对话框的例子? - 例如,执行命令时的配置设置窗口.
我见过的所有例子都使用了很好的中介模式,但是他们也都在视图模型中引用了一个不理想的视图(我们使用的是DataTemplates)
谢谢
有人可以向我解释Unity容器的概念,比如我是一个6岁的孩子吗?它是如何工作的以及它的作用是什么?
我花了很多时间尝试为以下挑战找到一个优雅的解决方案.我一直无法找到解决问题的解决方案.
我有一个简单的View,ViewModel和Model设置.为了便于解释,我会保持简单.
Model有一个名为TitleString类型的属性.Model是在DataContext的View.View有TextBlock这就是数据绑定到Title的模型.ViewModel有一个名为方法Save(),将保存Model到ServerServer可推到所做的更改Model到现在为止还挺好.现在我需要进行两项调整才能使模型与a保持同步Server.服务器的类型并不重要.只要知道我需要调用Save()才能将模型推送到Server.
调整1:
Model.Title属性将需要调用RaisePropertyChanged(),以转换为所做的更改Model由Server到View.这很好用,因为它Model是DataContextView还不错.
调整2:
Save()保存从所做的更改View对Model上Server.这是我被卡住的地方.当模型被更改时,我可以处理调用Save()的Model.PropertyChanged事件,ViewModel但这会使它回显服务器所做的更改.我正在寻找一个优雅而合理的解决方案,如果有意义,我愿意改变我的架构.
我们正在使用MVVM项目启动WPF,并且必须决定PRISM或MVVM Light(我对这两个框架都不熟悉).我已阅读了几篇文章但仍有几个问题.有人可以对框架中的以下几个方面有所了解吗?:
性能:出于任何原因,一个框架是否会比另一个框架表现更好?
应用程序内的通信(viewmodel到viewmodel或模块之间等):我已经读过MVVM Light有Messenging Service,它看起来也相当容易.但是PRISM似乎没有任何等价物.真的吗?PRISM如何处理交互?
单元测试:已经读过PRISM更好地支持单元测试.我们还可以在MVVM Light中编写NUNIT或VSTS测试吗?
说我有一个Person班级,一个PersonViewModel和一个PersonView.
将属性更新PersonView到Person模型很简单.PersonViewModel包含一个Person对象,并具有PersonView绑定到的公共属性,以便更新Person模型.
然而.
想象一下,Person模型可以更新Service.现在需要将属性更改传达给PersonViewModel然后再传递给PersonView.
我就是这样解决的:
对于Person模型中的每个属性,我将引发PropertyChanged事件.PersonViewModel订阅了PropertyChanged事件Person.PersonViewModel然后会引发另一个PropertyChanged以更新PersonView.
这对我来说似乎是最明显的方式,但我有点想把这个问题抛到那里,希望有人能给我一个更好的方法.这真的很简单,还是有更好的方法将模型标记为已修改并更新ViewModel上的相应属性?
该PersonView的DataContext的是PersonViewModel.Person从JSON填充并在其生命周期内多次更新.
随意为我的特定情况建议架构更改.
我将aqwert标记为我问题的答案,因为它为我提供了我已经提出的解决方案的替代方案.
这个问题的灵感来自这个封闭的问题:
我已经在企业应用程序中实现了自己的自定义MVVM实现.我有兴趣知道:
我希望这个问题不是主观的,每个人请不要参与:)
prism ×10
mvvm ×6
wpf ×6
c# ×4
.net ×3
mvvm-light ×3
silverlight ×3
architecture ×1
frameworks ×1
mediator ×1
mef ×1
prism-2 ×1