问题标签 [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.

0 投票
2 回答
300 浏览

c# - Nullable<> 作为 ViewPage 的 TModel

哪些 Nullable<> 类型不允许作为 System.Web.Mvc.ViewPage<TModel> 泛型的 TModel 参数传递的可能原因是什么?这有时会很方便。

在 ASP.NET MVC 源代码中定义了 TModel 应该是一个类:

但可空类型是值类型。也许定义可以不那么严格......

0 投票
3 回答
5112 浏览

.net - 在 MVVM 中,DataTemplates 是否将 Views 视为 UserControls 是 Views?

在 MVVM 中,每个 View 都有一个 ViewModel。我理解的视图是一个窗口、页面或用户控件,您可以将视图模型附加到其中,视图从中获取其数据。

但是DataTemplate也可以呈现 ViewModel 的数据。

所以我理解 DataTemplate 是另一个“视图”,但似乎存在差异,例如 Windows、Pages 和 UserControls 可以定义自己的 .dll,一种类型通过附加模板与 DataContect 绑定,以便 Windows、Pages , UserControls 可以通过ServiceLocator/Container等动态附加到 ViewModels。

在 UI 上呈现 ViewModel 的数据时,DataTemplates 与 Windows/Pages/UserControls 有何不同?除了这四种之外,还有其他类型的“视图”吗?

0 投票
3 回答
1716 浏览

asp.net-mvc - 对于需要在 ASP.NET MVC 中显示的分层数据,我应该如何构建我的 ViewModel?

我有一个看起来像这样的视图:

替代文字

我试图弄清楚我应该如何为这个视图表示我的 ViewModel。每个“机构”可以有多个“业务单位”,每个“业务单位”可以有多个“客户”。

在数据库中,我很容易用代理表、业务单元表和客户表的映射表和外键来表示这一点。

但是,现在我需要使用 LINQ 从数据库中查询这些数据,然后构造一个表示这种树状结构的 ViewModel 对象,以便我的 View 可以呈现它。

谁能给我关于我应该使用什么数据结构的提示,或者我的 ViewModel 在 C# 代码中的这种分层结构可能看起来像什么?我需要创建我的 ViewModel 对象来传递给这个视图。

任何有关如何表示 ViewModel 的建议都值得赞赏!

0 投票
3 回答
1437 浏览

asp.net-mvc - 在 LINQ 查询和 ASP.NET MVC 方面需要帮助?

我的存储库返回一个帐户列表。

每个帐户都有一个日期和一个 MoneySpent 十进制金额。所以,我有我的帐户列表,在我的控制器中,我正在尝试处理这个列表。

我想要一个对象,其中包含我的帐户列表中所有月份的字符串名称以及该月花费的所有资金的总和。

这是我尝试过的:

这似乎是计算每月总计的正确方法吗?

此外,我一直在为每个视图使用带有 ViewModels 的强类型视图,那么我应该制作什么类型的每月总计,以便我可以将其添加为我的 ViewModel 上的一个字段并将其传递给我的视图?

0 投票
3 回答
2233 浏览

wpf - MVVM - 控件与视图

我一直在 WPF 中做一个原型而不使用 MVVM。现在它的大小已经到了我正在重构它以使用 MVVM 的程度。

当我开始这个项目时,我直接进入并为很多事情创建了用户控件。

我现在正在破坏视图和视图模型中的东西。但是,我最终得到了包含 UserControls 的视图;UserControls 绑定到模型中现在的对象。

那么,UserControls 的概念现在在 MVVM 中已经死了吗?我的意思是,在过去(WinForms、ASP.NET 等)你会有一个名为“控件”的项目并重用它们。MVVM 中的“视图”是典型 UserControl 的直接替代品吗?

0 投票
5 回答
4290 浏览

silverlight - Silverlight 3 Beta,ViewModel 中的 NavigationService

我正在开发一个 silverlight 3 beta 导航应用程序,所以我对 MVVM 模式进行了一些细微的改动:)(多合一视图模型),使用棱镜和其他东西。

问题:如何在视图模型中导航到不同的“NavigationPage”

现在长话短说,视图模型被声明为页面资源。

然后使用命令将所有内容与视图模型连接起来

现在,如果我尝试像这样在视图模型中的任何位置导航

Navigationservice 是空的,我环顾四周发现了这篇文章,它描述了使用 helix 0.3 进行导航,这是在 sl2 天构建的,当时导航控件不存在,现在 helix 的模型运行良好,并通过在中实现 INavigationAware视图模型,您可以访问 NavigationContext,然后执行您需要的任何操作,我尝试过 helix,它可以工作。

SL3 带有内置的导航支持,可以这么说,这正是 helix 所做的。所以我不想使用 3rd 方框架,而是更喜欢使用内置的 sl3 功能。

SL3 中是否有任何东西可以模拟 helix 的 INavigationAware 接口?

0 投票
1 回答
489 浏览

wpf - 调用 ViewModel 方法

我对 WPF 和使用 MVVM 设计模式还很陌生。为了帮助了解这一点,我正在开发一个简单的掷骰子应用程序。

现在,我有一个 Dice 类和一个 DiceViewModel 类。我还有一个 MainWindowViewModel 类,它包含一个可观察的 DiceViewModel 集合。

当用户单击“Roll”按钮时,它会向我的 MainWindowViewModel 启动一个命令,以在每个 DiceViewModel 上调用 Roll。

我知道命令用于 GUI 绑定到 ModelView 而不需要代码隐藏。

所以我的问题。我的 MainWindowViewModel 直接在每个 DiceViewModel 上调用 Roll 是正确的 MVVM,还是应该使用命令来执行此操作?

或者换一种说法,所有(或大多数)视图模型方法是否应该在不直接被 GUI 绑定时通过命令访问?

0 投票
3 回答
395 浏览

c# - 更新 ListBox 内的项目

我有一个 ListBox 绑定到 DiceViewModel 的可观察集合。每当我单击按钮添加新项目时,ListBox 都会按预期显示新项目。到目前为止,一切都运行良好。

但是,我还有另一个按钮可以滚动所有现有的骰子。框中已列出的项目不会更新,我不确定如何在保持 MVVM 设计模式的同时强制执行此操作。

另外,我的 DiceViewModel 已经实现了 INotifyPropertyChanged。

有什么建议么?

0 投票
3 回答
1044 浏览

c# - 与 MVVM 的用户界面交互

我做了一些谷歌搜索,但没有找到这个难题的答案。

前提是您具备以下条件:

  • 我的超级视图
  • 我的超级视图模型

MySuperView 有两个文本框,它们都绑定到 ViewModel 上的字符串属性,并且您使用 DelegateCommand 使用以下语法将“保存”按钮绑定到 ViewModel:

视图模型:

看法:

您如何处理 UI 元素以使用户交互更令人愉悦。例如,假设在 DelegateCommand 的保存操作期间发生了一些较低级别的故障,并且您想触发其中一个文本框的工具提示。这通常会如何发生?

我想尽可能地坚持使用干净的代码隐藏,但我并不反对将 UI 特定的代码放在那里。

0 投票
2 回答
8058 浏览

silverlight - Silverlight DataGrid.Celltemplate 绑定到 ViewModel

我正在实现 MVVC 模式,并且无法从数据网格中的 DataTemplate 中绑定视图模型中的属性。如果我在列中的 DataTemplate 之外有一个文本块,它可以正常工作(因为我直接引用 UserConrol 的数据上下文,即 VM)但是从 DataTemplate 内部它不会返回纯文本属性。但是,它将从迭代的 IEnumerable 项返回一个属性。

我忽略的 DataTemplate 是否存在某种问题?请注意,“{Binding Path=DataContext.testText, ElementName=View}”适用于除 DataTemplate 中的元素之外的所有元素。(请注意,我知道 DG 之外的第一个文本块不需要 ElementName 等,但我刚刚这样做是为了向自己证明它引用了正确的东西)