草庐IT

viewmodel

全部标签

c# - MVVM:修改模型,如何正确更新ViewModel和View?

案例假设我有一个Person类、一个PersonViewModel和一个PersonView。将属性从PersonView更新到Person模型非常简单。PersonViewModel包含一个Person对象并具有PersonView绑定(bind)到的公共(public)属性以更新Person模型。但是。假设Person模型可以通过Service进行更新。现在需要将属性更改传达给PersonViewModel,然后再传达给PersonView。这就是我要解决的问题:对于Person模型上的每个属性,我都会引发PropertyChanged事件。PersonViewModel订阅了Pe

c# - MVC 4 ViewModel 没有被发送回 Controller

我似乎无法弄清楚如何将整个ViewModel发送回Controller以执行“验证并保存”功能。这是我的Controller:[HttpPost]publicActionResultSend(BitcoinTransactionViewModeltransaction){}这是View中的表单:TransactionId@Html.DisplayFor(m=>m.Transaction.TransactionId)DepositedAmount@Model.Transaction.Amount.ToString()BTCTime@Model.Transaction.Time.ToStr

c# - WPF/MVVM - 如何处理双击 ViewModel 中的 TreeViewItems?

(注意-这是重新发布,因为我的第一个问题发布在错误的标题下:Here抱歉!)我有一个标准的WPFTreeView并绑定(bind)了项目以查看模型类。我现在希望处理双击项目时的行为(打开文档visual-studio-style)。我可以让事件处理程序在包含TreeView的控件中触发(显示的xaml),但是我如何绑定(bind)到View模型类上的特定行为-例如项目View模型?最好绑定(bind)到ICommand-implementer,因为它在其他地方使用... 最佳答案 稍微更新一下我的回答。为此,我尝试了很多不同的方法,

c# - ASP.NET MVC 中的 ViewModel 验证最佳实践

我正在使用DataAnnotations在客户端使用jquery.validate.unobtrusive验证我的ViewModel并在服务器端使用ASP.NETMVC应用程序。不久前,我发现我可以像这样编写验证:[Required(ErrorMessage="{0}isrequired")]publicstringName{get;set;}这样我就可以轻松地在config或资源中定义一些通用字符串,并始终在DataAnnotations中使用它。因此,将来在我的整个应用程序中更改验证消息会更容易。我还知道有一个FluentValidation库允许将验证规则添加到现有的ViewMo

c# - 在 MVVM 中,每个 ViewModel 是否只耦合到一个 Model?

在MVVM实现中,是否每个ViewModel都只耦合到一个Model?我正在尝试在一个项目中实现MVVM模式,但我发现有时一个View可能需要来自多个Models的信息。例如,对于UserProfileView,它的UserProfileViewModel可能需要来自UserAccountModel、UserProfileSettingsModel、UserPostsDataModel等但是,在我读到的大多数有关MVVM的文章中,ViewModel仅通过依赖注入(inject)包含在一个模型上。所以构造函数只接受一个模型。当ViewModel必须从多个Model获取信息时,它将如何工作

c# - "Are you sure?"提示。 ViewModel 的一部分还是纯粹的 View ?

我一直在想把“你确定吗?”放在哪里?在我的MVVMWPF应用程序中键入提示。我倾向于认为这些纯粹是View的一部分。如果ViewModel公开了一个DeleteCommand,那么我希望该命令立即删除。要将此类提示集成到ViewModel中,它必须公开一个单独的RequestDeleteCommand,一个用于绑定(bind)提示的DeletePromptItem属性,它也可以兼作触发以显示提示。即便如此,也没有什么可以阻止直接调用DeleteCommand的单元测试,除非我在ViewModel中放入特定逻辑以要求DeletePromptItem匹配作为参数提供的项目到DeleteCo

c# - MVVM:ViewModel 和业务逻辑连接

在使用MVVM模式完成了几个项目之后,我仍在为ViewModel的角色而苦苦挣扎:我过去做过的事情:仅将模型用作数据容器。放置逻辑来操作ViewModel中的数据。(这就是业务逻辑吗?)缺点:逻辑不可重用。我现在正在尝试的是:保持ViewModel尽可能薄。将所有逻辑移至模型层。仅在ViewModel中保留表示逻辑。缺点:如果在模型层内更改数据,UI通知会非常痛苦。所以我会给你一个例子,让它更清楚:场景:重命名文件的工具。类(class):File:代表每一个File;规则:包含如何重命名文件的逻辑;如果我遵循方法1:为文件、规则和View创建ViewModel->RenamerVie

c# - WPF-MVVM : Setting UI control focus from ViewModel

在MVVM架构中设置控制焦点的最佳做法是什么。我设想的方式是在ViewModel上使用一个属性,该属性会在需要时触发焦点更改。而不是让UI控件绑定(bind)/监听该属性,以便在它发生变化时设置适当的焦点。我将其视为ViewModel事物,因为我想在ViewModel执行特定操作(例如加载特定数据)后适当设置焦点。最佳做法是什么? 最佳答案 按照此处答案中的建议使用IsFocused附加属性:SetfocusontextboxinWPFfromviewmodel(C#)然后您可以简单地绑定(bind)到View模型中的属性。

c# - WPF 将 UI 事件绑定(bind)到 ViewModel 中的命令

我正在对一个简单的应用程序进行一些重构以遵循MVVM,我的问题是如何将SelectionChanged事件从我的代码中移到viewModel后面?我看过一些将元素绑定(bind)到命令的示例,但没有完全理解。任何人都可以协助解决这个问题。谢谢!任何人都可以使用下面的代码提供解决方案吗?非常感谢!publicpartialclassMyAppView:Window{publicMyAppView(){InitializeComponent();this.DataContext=newMyAppViewModel();//Insertcoderequiredonobjectcreation

C#/WPF : PropertyChanged for all Properties in ViewModel?

我有这样一个类:publicclassPersonViewModel:ViewModelBase//HereistheINotifyPropertyChangedStuff{publicPersonViewModel(Personperson){PersonEntity=person;}publicPersonPersonEntity{get{returnPersonEntity.Name;}privateset{PersonEntity.Name=value;RaisePropertyChanged("PersonEntity");}publicstringName{get{retu