问题标签 [viewmodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - MVVM 模式,ViewModel DataContext 问题
我需要弄清楚如何在 ViewModel 之间进行通信。我是 MVVM 的新手,所以请善待。
这是一个愚蠢的例子
类定义(假设我已经在 ParentViewModel 中挂钩 Child.PropertyChanged 事件):
这是您在资源字典中看到的内容
和 ChildView 的代码隐藏:
明显的问题是,当 ChildView 被实例化(通过从 DataTemplate 中选择)时,它会创建一个新的 ChildViewModel 类,而 ParentViewModel 无权访问它。
那么如何将 View 的 DataContext 实例化为导致 DataTemplate 被选中的原始 ViewModel 呢?
一个明显的解决方法是将 ChildViewModel 中的属性合并到 ParentViewModel 中,但我宁愿将它分开,因为以便重用。
我敢肯定答案是微不足道的,我只是想知道它是什么。:)
提前致谢。
wpf - 如何在 ViewModel 中呈现(视图)模型的集合
我对 C#/WPF 的 MVVM 设计有疑问。我看过几个演示应用程序,但它们并没有真正解决我的问题。我的应用程序由包含其他对象的对象组成。很像亲子关系。
我现在的问题是:
- children 属性是否必须是 ViewModel
- 如果是这样,我如何创建新的父对象,其中包含通过 ViewModels的现有子对象?
我有以下情况:
这里的问题是,ParentVM 包含 ChildVM,但实际的 Parent(位于 ParentVM 内部)没有 ChildVM 对象包含的 Child 对象。我也不认为复制子对象是一个好主意,因为它会导致冗余,并且在我的应用程序上下文中,也不需要/不可能创建新的子对象。
我还考虑了以下类设计:
但是,这意味着如果我想操作 ParentVM 的 Child 对象,我将直接对 Model 进行操作。
另一方面,我可以简单地将 (Model) Parent 留空并使用 ParentVM 在数据库中创建一个新的 Parent。但这是处理问题的好方法吗?
c# - MVC 自定义视图模型问题
我是一个 MVC 新手,所以你必须原谅我想象的一个基本问题。
我创建了一个自定义视图模型,以便在我的表单中有一个多选列表:
我发现我的第一次尝试只捕获了多选的第一个值,我猜这是因为我的创建操作看起来像这样:
所以,我决定把它改成这样:
这样我就可以从 MultiSelectList 获得完整的输出并相应地解析它。麻烦的是,这抱怨没有用于视图模型的无参数构造函数(并且没有) - 我不确定解决这个问题的正确方法。我尝试过的任何方法都没有奏效,我真的需要一些帮助!
如果有帮助,我的视图如下所示:
asp.net-mvc - asp.net mvc 中的 Viewmodel 安全性
赋予 View 的这两个模型在安全性方面是否存在差异?IE。在第二个示例中,网络用户/黑客可以以任何方式访问这些方法吗?
wpf - 在 MVVM 中,如何将视图逻辑与模型和业务逻辑保持在视图模型之外?
我无法弄清楚如何让视图模型收到模型更改的通知,而无需在我的模型中添加一堆特定于 UI 的东西,例如 INotifyProperyChanged 和 INotifyCollectionChanged,或者创建大量不同的事件并做一堆感觉就像它们是特定于 UI 的,应该远离模型。
否则我只需要复制视图模型中的所有业务逻辑以确保一切都是最新的,那么拥有模型有什么意义呢?
我的模型中的一个棘手问题是“类别”类的属性。你可以把它想象成一个树结构,属性都是叶子节点的后代。那么在模型中,属性是通过它的所有孩子递归生成的,这一切都很好。然而,视图模型需要绑定到该属性并且需要知道它何时更改。我应该更改模型以适应视图模型吗?如果我这样做了,那么此时视图模型实际上并没有做任何事情,模型会引发所有必要的更改通知,并且视图可以直接绑定到模型。此外,如果模型是我没有来源的东西,我将如何解决这个问题?
c# - IEnumerable 和字符串数组 - 查找匹配值
背景:我在视图模型中有一个带有 MultiSelectList 的 ASP.NET MVC 视图页面。我想用 MultiSelectList 对象中的 SelectedValues 列表填充标签。该列表以 IDName 类型存储在 MultiSelectList 中:
所以 MultiSelectList.Items 是一个包含 IDName 列表的 IEnumerable。我可以在这个列表上做一个 foreach 并抓取 .Name 来获取每个条目的名称。但是,如果 ID 在 MultiSelectList.SelectedItems 中,我只想这样做,它看起来是一个字符串 [],看起来像:
所以,当 IDName.ID 在 SelectedItems 列表中时,我只想获取 IDName.Name。
我对 MVC 和 C# 都很陌生,所以我不确定最好的方法。有什么建议么?
更新#2:
好的,我很密集。这有效:
SelectedValues 实际上是一个包含 string[] 的 IEnumerable。
wpf - MVVM Tabcontrol 更改选项卡
我正在用 wpf 开发一个 mvvm 应用程序。如果文本框有文本,则刚刚添加了一个要求以阻止用户更改选项卡。
在视图模型中完全做到这一点的最佳方法是什么?我不知道如何阻止 tabitem,因为 tabcontrol 中没有要绑定的依赖对象命令,我是否需要滚动自己的 tabcontrol 并围绕 SelectionChanged 事件构建 ICommand?
我应该简单地(eegad..不要说)将代码放在 SelectionChanged 事件中视图后面的代码中吗?
我有没有想到的替代方案?
wpf - MVVM ICommand 替代方案
我已经开始创建一个 wpf mvvm 应用程序。ViewModel 的一个重要组成部分似乎是一堆 ICommand,它们具有允许视图与 viewmodel 交互的松散耦合方式。
我的问题是,为什么我不能直接绑定到一个方法?
我使用了 Josh Smith 的 ICommand 的 RelayCommand 实现,它允许您将 delgate 注入到 ICommand 对象中,但实际上,是否有一些更简单的方法可以让按钮按下来调用视图模型中的方法?
我是 MVVM 的新手,我相信我需要一些启发
wpf - 使用 Onyx 的 MVVM 中父/子视图模型关系的最佳实践?
嘿伙计们!
我目前正在通过 Onyx 框架使用 MVVM 开发一个小型 WPF 项目。
我当前的视图架构是这样的:
我现在的问题是如何实现两个视图模型之间的关系。我目前基本上只有 TranslationView 有自己的 ViewModel,没有到父 ViewModel 的链接。
问题是我希望能够通过 MainView 打开一些文件,然后解析内容并将它们显示在 TranslationView 中。有推荐的方法吗?
我考虑过只使用 TranslationViewModel 作为 MainViewModel 中的属性,然后将其用作 TranslationView 的 DataContext,但它似乎有点违反 Onyx 的模型以通过类型(而不是对象)引用来定义 ViewModel。
asp.net-mvc - 使用自动生成的控件正确提交表单
让我们考虑以下示例。看法:
控制器:
提出的解决方案是关于手动解析 Request.Form 对我来说似乎超出了 MVC 概念。它在对该控制器方法进行单元测试时出现问题。在这种情况下,我需要生成模拟 Request.Form 对象,而不是作为输入参数传递的一些 ViewModel。
问:有没有其他类似的提交表单的解决方案,以便包含提交的控件集合的 ViewModel 对象作为输入参数传递给控制器方法?
例如:
或者
ETC