我是TDD的新手。我已经开始在View模型上创建我需要的属性作为普通自动属性。publicstringFirstname{get;set;}然后我创建一个测试[TestMethod][Tag("Property")]publicvoidFirstNameTest(){ViewModel=newCustomerViewModel();ViewModel.PropertyChanged+=(s,e)=>{Assert.AreEqual("Firstname",e.PropertyName);Assert.AreEqual("Test",ViewModel.Firstname);};View
我有一个列表框,其中的项目绑定(bind)到一个ObservableCollection。现在,我需要从viewModel中更新UI。我的View模型中没有对列表框的引用。如果我从我的ObservableCollection中删除或添加一个项目,ui会更新。基于一些其他逻辑我需要更新UI...但是ObservableCollection是一样的。如何在不向我的ObservableCollection添加或删除项目的情况下更新UI?谢谢 最佳答案 我有一个类似的问题,我想更改项目的背景,但显然项目和集合都没有改变。这是通过调用实现的:
MVVM的优点之一是ViewModel的可测试性。在我的特定情况下,我有一个VM,它在调用命令时加载一些数据,及其相应的测试:publicclassMyViewModel{publicDelegateCommandLoadDataCommand{get;set;}privateListmyData;publicListMyData{get{returnmyData;}set{myData=value;RaisePropertyChanged(()=>MyData);}}publicMyViewModel(){LoadDataCommand=newDelegateCommand(OnLo
我有单独的模型和View模型类。其中viewmodel类仅进行UI级别验证(引用:Validation:ModelorViewModel)。我可以在Controller中验证模型(vewmodel)是否有效。问:如何验证模型(带有数据注释的主要实体)。我没有使用模型对象开发View模型。只需复制属性并添加该特定View中可能需要的所有属性。//ModelClasspublicclassUser{[Required]publicstringEmail{get;set;}[Required]publicDateTimeCreated{get;set;}}//ViewModelClasspu
我有一个使用M-V-VM方法编写的应用程序。数据访问在模型中完成。如果此处发生fatalerror(例如,与数据源的连接丢失),则抛出Exception。此异常冒泡到ViewModel。但是,因为数据访问的原始触发器是数据绑定(bind),WPF吞下了这个异常(它只在应用程序在调试器下运行时记录在输出窗口中)。我宁愿这个异常保持未处理状态,这样我的应用程序范围内的未处理异常处理程序就可以拾取它、记录它并优雅地退出。我怎样才能做到这一点? 最佳答案 您可以在调度程序上对异常抛出操作进行排队。//Thispropertyisconnec
如何在多个ViewModel之间共享数据?例如,应用程序中有一个名为Project的类。publicclassProject:ModelBase{privatestring_projectName;publicstringProjectName{get{return_projectName;}set{_projectName=value;RaisePropertyChanged(()=>ProjectName);}}}在多个ViewModels应用程序中应该访问ActiveProject。在ViewModel之间共享项目的最佳方式是什么?中介者模式?(消息)静态对象单例模式(如果是怎么
我的问题很简单。我想知道在MVC应用程序中将我的ViewModels放在哪里。目前我正在处理的项目只有ViewModels,它们存储在Models文件夹中。在该文件夹中,我们直接创建ViewModel类。但通常我也会有Model类,以从数据库或其他东西中获取数据。然后我从Controller与Model方法“对话”并将结果存储在ViewModel属性中。但是当我同时使用Model类和ViewModel类时,我该把它们放在哪里呢?在为这两者构建文件/文件夹的意义上,什么是好的做法? 最佳答案 只需在您的项目中创建一个名为ViewMod
我目前正在尝试确定何时使用ViewModel,何时不使用。我正在使用Automapper完成任务,目前有以下代码://账户Controller.cs[AuthWhereRole(Roles=AuthorizeRole.Developer)]publicActionResultList(){MembershipUserCollectionusers=_memberShipService.GetAllUsers();IEnumerableviewModel=Mapper.Map,IEnumerable>(users.Cast().AsEnumerable());returnView("Li
当用户单击窗口的关闭按钮时,是否可以从ViewModel取消关闭,还是我必须求助于代码隐藏?据我所知,CanClose或TryClose不能解决问题。 最佳答案 您可能已经尝试过了,但我刚刚创建了一个快速测试,从Screen派生了一个View模型并覆盖了CanClose。publicclassShellViewModel:Screen{publicoverridevoidCanClose(Actioncallback){//if(somelogic...)callback(false);//willcancelclose}}
我有一个MainView.xaml,可以很好地绑定(bind)到MainViewModel。我想尝试的是将主窗体上的许多控件拆分为UserControl。现在,我将UserControls与MainView一起放入Views文件夹中,并将它们命名为LeftSideControlView.xaml和RightSideControlView.xaml。对应的ViewModels在名为LeftSideControlViewModel等的ViewModels文件夹中。我成功地将用户控件添加到主视图:它们在设计器中正确显示。这是xaml中的其中一个:我使用CaSTLe.Windsor在AppBo