草庐IT

Jetpack学习之ViewModel、Lifecycles、LiveData

全部标签

c# - MVVM:精简 ViewModel 和丰富模型

我一直在与MVVM模式作斗争,并且在尝试为小型/中型项目创建实用设计时遇到了许多挑战。其中一项挑战是弄清楚如何在不创建大量重复且难以维护的代码的情况下获得与此模式分离的好处。我目前的策略是创建“丰富”的模型类。他们充分意识到他们将被MVVM模式消耗并实现INotifyPropertyChanged,允许他们的集合被观察并保持认识到他们可能总是被观察。我的ViewModel类往往很薄,仅在实际需要转换数据时才公开属性,其中大部分代码是RelayCommand处理程序。View很乐意直接绑定(bind)到ViewModel或模型,具体取决于是否需要任何数据转换。我使用AOP(通过Posts

c# - MVC ASP.NET 中的 ViewData 和 ViewModel

我是.Net开发的新手,现在正在学习NerdDinner教程。只是想知道你们中的任何人是否能够告诉我WhatisthedifferencesbetweenViewDataandViewModel(我所知道的是它们用于将某种形式的数据从Controller传递到View)并且可能会告诉我在什么情况下我应该使用ViewData而不是ViewModel,反之亦然提前致谢!莎莉 最佳答案 什么是View数据?将数据放入其中的字典对象,然后变成可供查看。查看数据样本ControllerAction方法喜欢:publicclassHomeCon

c# - 如何将这些 LINQ 结果加载到我的 ViewModel 类中?

我有一个LINQ查询,它返回与我的PictureGallery类匹配的结果。我需要将它们加载到我的ViewModel但我收到以下错误:Cannotimplicitlyconverttype'System.Linq.IQueryable'to'System.Collections.Generic.IEnumerable'.Anexplicitconversionexists(areyoumissingacast?)我是C#的新手。如何将“结果”转换到我的“PictureGallery”viewmddel类中?提前致谢!Controller://TestMediaIDvarMediaID=

c# - 将 ListView 的 SelectedItems 绑定(bind)到 ViewModel

我有一个ListView,它将项目与View模型中的属性绑定(bind)。在View模型中。ICollectionView_businessCollectionpublicICollectionViewBusinessCollection{get{return_businessCollection;}set{_businessCollection=value;RaisePropertyOnChange("BusinessCollection");}}如何在View模型中获取选中的businesscollection项? 最佳答案 1

c# - 如何在没有代码隐藏的情况下处理我的 ViewModel 中的 WPF 路由命令?

根据我对MVVM的理解,直接在ViewModel中处理路由命令是一种很好的做法。当路由命令在ViewModel中定义为RelayCommand(或DelegateCommand)时,很容易像这样直接绑定(bind)到命令:Command={BindingMyViewModelDefinedCommand}。实际上,对于在我的ViewModel外部定义的路由命令,我在View的代码隐藏中处理这些命令并将调用转发到ViewModel。但我觉得我不得不这样做很尴尬。它违背了推荐的MVVM良好实践。我认为应该有一种更优雅的方式来完成这项工作。如何直接在ViewModel中处理“System.W

c# - Caliburn.Micro 无法匹配来自不同程序集的 View 和 ViewModel

我刚开始使用Caliburn.Micro。我正在尝试引导我的简单示例解决方案,将ShellView(用户控件)放在Test.App程序集中,并将ShellViewModel放在Test.ViewModel程序集中。我得到的是一个带有以下文本的窗口:“找不到Caliburn.Test.ViewModel.ShellViewModel的View”。但如果我将ViewModel移动到.App程序集,它会完美运行。这是Caliburn.Micro.Test程序集(可执行)中的Bootstraper:namespaceCaliburn.Micro.Test{publicclassAppBoots

c# - 我能以某种方式告诉 Resharper ViewModel 的类型吗?

我们在不同的程序集中有Views和ViewModels。View的程序集具有对VM的引用。(有时我们需要隐藏代码)。ViewModel的DataContext是在代码中设置的,而不是在XAML中。因此,无论是VS还是Resharper都无法像智能感知那样提供帮助,Resharper也会给出很多警告。我们是否可以在XAML注释中为Resharper设置任何指令,以表明我们打算将View与特定类型的VM一起使用?更新:不错blogpost作为已接受答案的补充。 最佳答案 我遇到了同样的问题,并通过使用XAML中的设计时支持在XAML编辑

c# - XAML 中的命令绑定(bind)与 ViewModel 中的 ICommand 属性

我刚刚开始在应用程序中使用MVVM命令。我找到了许多示例,并在我的代码中尝试了两种方法。一些示例在xaml中具有命令绑定(bind),如下所示:...OpenRecentFile_Executed是ViewModel中的一个方法和一个静态ICommand,如下所示:publicstaticreadonlyICommandOpenRecentFile=newRoutedCommand("OpenRecent",typeof(MainWindow));我还看到ViewModel上有一个ICommand类型的属性在View中绑定(bind)到,如下所示:在ViewModel中:private

c# - 在使用 Automapper 映射 ViewModel 之后,我应该如何测试以及应该测试什么?

我正在尝试测试Controller的Index操作。该操作使用AutoMapper将域Customer对象映射到View模型TestCustomerForm。虽然这有效,但我关心的是测试我从Index操作收到的结果的最佳方法。Controller的索引操作如下所示:publicActionResultIndex(){TestCustomerFormcust=Mapper.Map(_repository.GetCustomerByLogin(CurrentUserLoginName));returnView(cust);}它的TestMethod看起来像这样:[TestMethod]pu

c# - ViewModel 中的警报对话框 - MVVMCross

在ViewModel中,我有Save方法,我在其中检查isValid属性。如果isValid为false,那么我想显示一条错误消息。由于AlertDialog是平台特定的,我想知道您如何在ViewModel中处理这种情况?publicvoidSave(){if(isValid){OnExit(this,null);}else{//issueanalertdialoghere}}更新我使用了以下plugin并按如下方式添加了以下代码行,但会引发错误。else{Mvx.Resolve().Alert("itisnotvalid");}更新2Chance.MvvmCross.Plugins.