我正在研究WPF的MVVM设计模式。但不确定将数据访问代码放在哪里?在我看过的一些示例中,数据访问是直接在ViewModel中执行的。在ViewModel中放置类似linqtosql的东西似乎很奇怪?其他示例有一个单独的数据访问项目,这看起来更像吗?这是一个通用的方法吗?我觉得我在这里错过了什么!谢谢 最佳答案 以下是我使用LINQ组织我的MVVM项目的方式:模型-我认为模型是系统的状态。它提供数据接口(interface),并跟踪系统状态。模型不知道ViewModel或View——它只是为其数据和各种事件提供一个公共(public
(注意-这是重新发布,因为我的第一个问题发布在错误的标题下:Here抱歉!)我有一个标准的WPFTreeView并绑定(bind)了项目以查看模型类。我现在希望处理双击项目时的行为(打开文档visual-studio-style)。我可以让事件处理程序在包含TreeView的控件中触发(显示的xaml),但是我如何绑定(bind)到View模型类上的特定行为-例如项目View模型?最好绑定(bind)到ICommand-implementer,因为它在其他地方使用... 最佳答案 稍微更新一下我的回答。为此,我尝试了很多不同的方法,
我有一个包含许多对象的WPF/EntityFramework(4.0)项目。我想构建应用程序,以便我可以在View模型之间共享对象选择状态。例如:我们有汽车、司机、乘客和cargo类。我们还有用于CarList、DriverList等的UserControls和用于CarEditor、DriverEditor等的编辑器窗口。此外,我们还有用于所有这些(CarListViewModel、DriverListViewModel、CargoEditorViewModel等)的View模型。这一切构成了一个可停靠界面,用户可以在其中打开多个对象列表、编辑器和查看器。我想要的是一个具体的代码示例
我正在制作一个WPF应用程序,它可以通过自定义“下一步”和“返回”按钮和命令进行导航(即不使用NavigationWindow)。在一个屏幕上,我有一个ListBox必须支持多个选择(使用Extended模式)。我有一个此屏幕的View模型,并将所选项目存储为属性,因为它们需要维护。但是,我知道ListBox的SelectedItems属性是只读的。我一直在尝试使用thissolutionhere来解决这个问题,但我无法将其采用到我的实现中。我发现我无法区分何时取消选择一个或多个元素以及何时在屏幕之间导航(NotifyCollectionChangedAction.Remove在这两种
在MVVM实现中,是否每个ViewModel都只耦合到一个Model?我正在尝试在一个项目中实现MVVM模式,但我发现有时一个View可能需要来自多个Models的信息。例如,对于UserProfileView,它的UserProfileViewModel可能需要来自UserAccountModel、UserProfileSettingsModel、UserPostsDataModel等但是,在我读到的大多数有关MVVM的文章中,ViewModel仅通过依赖注入(inject)包含在一个模型上。所以构造函数只接受一个模型。当ViewModel必须从多个Model获取信息时,它将如何工作
我有一个按钮,我将此按钮绑定(bind)到ViewModel中的一个命令,比如OpenWindowCommand。当我点击按钮时,我想打开一个新窗口。但是创建一个窗口实例并从View模型中显示一个窗口是违反MVVM的。我创建了这样的界面interfaceIWindowService{voidshowWindow(objectdataContext);}和WindowService像这样实现了这个接口(interface)classWindowService:IWindowService{publicvoidshowWindow(objectdataContext){ChildWindo
我读过几篇关于(数据)模型在MVVM模式中的作用的文章。但是,我仍然无法弄清楚模型中包含的内容。模型是否应该实现INotifyPropertyChanged?如果是这样,VM和模型之间有什么区别?否则,模型中的更改将不会通知虚拟机和View它发生了。所以-考虑到模型中的逻辑,很明显它应该通知ViewModel它的一些变化。但是,在两个类中都实现INotifyPropertyChanged是不是很奇怪?非常感谢! 最佳答案 该模型实现您的业务逻辑。View模型装饰您的业务逻辑,以便在View(某种形式的UI,例如web、winform
在使用MVVM模式完成了几个项目之后,我仍在为ViewModel的角色而苦苦挣扎:我过去做过的事情:仅将模型用作数据容器。放置逻辑来操作ViewModel中的数据。(这就是业务逻辑吗?)缺点:逻辑不可重用。我现在正在尝试的是:保持ViewModel尽可能薄。将所有逻辑移至模型层。仅在ViewModel中保留表示逻辑。缺点:如果在模型层内更改数据,UI通知会非常痛苦。所以我会给你一个例子,让它更清楚:场景:重命名文件的工具。类(class):File:代表每一个File;规则:包含如何重命名文件的逻辑;如果我遵循方法1:为文件、规则和View创建ViewModel->RenamerVie
我有一个包含多个View的WPF应用程序。我想从View1切换到View2,然后我可以从那里切换到多个View。所以我想要View1上的一个按钮,用于在同一窗口中加载View2。我尝试了这些东西,但无法正常工作。HowtonavigatethroughwindowswithMVVMLightforWPF?https://galasoft.ch/posts/2011/01/navigation-in-a-wp7-application-with-mvvm-light从第一个链接来看,问题是我不理解ViewModelLocator代码。他们调用了CreateMain();函数,但这是在哪里
终于开始做一些Silverlight开发,我遇到了MVVM。我熟悉MVC,我正在阅读的文章说,由于XAML,MVC无法正常工作。没有太多的XAML经验显然是我没有明白这一点的原因。谁能解释为什么MVC不适合以及为什么MVVM更适合Silverlight开发?谢谢京东 最佳答案 这是一个非常细微的区别,我可以通过比较ASP.NET中的MVC和WPF中的MVVM来最好地解释这一点。在ASP.NETMVC中,请求来自Web服务器并由Controller直接处理。Controller确定合适的View并用模型填充它。Controller然后