问题标签 [mvvm]

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 回答
3071 浏览

mvvm - MVVM + Datacontext + DataTemplate + Blend = problems

I'm currently using MVVM in a WPF project, all works very well. I have one Master view and many Detail views that I manage using a currentView property in my MasterViewModel. By using a datatemplate, I bind a view to a viewmodel. In fact, my master view has a contentcontrol whose content property is binded to my CurrentView property. When I set this currentview property to a viewmodel or another, it calls the corresponding template.

My problem is that using this, my detail views doesn't have explicit datacontext because it is placed by my datatemplate. So in blend, when I open my view to edit its design, I have no datas to bind to my view. If I set a datacontext to my detailview, in blend I can see all datas I can bind but in runtime, the datacontext set by datatemplate is overrided by the datacontext set in my detailview, so I have no datas during runtime.

Does anyone knows how I can create a good MVVM project, with views managed by datatemplates and with datacontext that we can see with Blend ?

Thanks,

0 投票
4 回答
2838 浏览

wpf - WPF 数据绑定和类型转换

我有一个关于 WPF 绑定和转换 XAML 中 UI 对象看到的数据类型的问题。

我有一个用户控件,我想在不同的应用程序中重用它。用户控件显示一个缩略图和几个 TextBlocks 来显示人员的人口统计信息,例如姓名和地址。用户控件用于 MVVM 设计,因此它绑定到特定于用户控件的 ViewModel。

遵循典型的 MVVM 设计原则,用户控件的 ViewModel 通常嵌入到其他 ViewModel 中以构成更大的 UI。

用户控件视图模型期望某个类型(类)作为其绑定对象。然而,嵌入UC的VM的ViewModel具有完全不同的对象模型,因此它们不能简单地将数据传递给UC的VM。需要将父 VM 的数据模型转换为 UC VM 的数据模型。

我的问题是:是否有一种认可的方式来执行这种转换?

我查看了 IValueConverter 和 IMultiValueConverter ,这些看起来不像是要走的路。

我想我需要的是父 VM 和嵌入式 UC VM 之间的一种 shim,其中父 VM 的数据被转换为 UC VM 所需的格式。

或者,它基本上归结为我必须编写一个自定义 UC VM 来处理父 VM 提供的任何类型?

0 投票
3 回答
2285 浏览

wpf - ViewModel/View 关系和验证

在我们的 WPF 应用程序中,我们希望使用基本的 MVVM 模式。我们正在讨论它,出现了一些关于 ViewModel/View 关系和验证的不确定性。你说下面是不是很好理解呢?

  • 每个 View 都有一个且只有一个 ViewModel ,而 ViewModel 的目的是为其 View 提供数据并处理其 View 的所有事件和命令。(是否存在一个 ViewModel 服务两个 View 的情况,例如一个标准 XAML 输入表单视图和一个 CSV 导入,它提供与表单相同的数据,因此需要进行相同的验证?)

  • 当视图抛出 ChangedFocus 或 SaveButtonPressed 事件等时,验证仅由 ViewModel 处理。

  • 模型非常愚蠢,只是基于数据库中的一个或多个表的数据结构,但模型本身不处理验证,例如。甚至是 ViewModel 建立并持有对象的 ObservableCollection,例如“客户”,而不是模型本身。

任何反馈表示赞赏。

0 投票
1 回答
465 浏览

silverlight - 哪种 Silverlight MVVM 测试项目类型?

在为 Silverlight MVVM 应用程序创建测试项目时,我应该创建一个针对 ViewModel 的标准 C# 测试项目,还是针对视图的Silverlight 测试项目,或者(gulp)两者...

0 投票
2 回答
4766 浏览

wpf - MVVM 绑定到 InkCanvas

我好像遇到了路障。我们将 MVVM 与 Prism 一起使用,并且有一个需要 Ink Canvas 的视图。我创建了一个从我的 ViewModel 绑定到视图的 StrokeCollection。我可以从我的视图模型中设置集合,但是在用户绘制时视图模型不会发生更改。有没有办法使这项工作?

我的 ViewModel 中的属性如下:

这是我的 XAML 绑定行:

出于某种原因,显然 InkCanvas 从未通知 ViewModel 任何更改。

0 投票
1 回答
283 浏览

silverlight - Silverlight 单元测试 - 如何检查 UI 基本类型?

简而言之:在 Silverlight 单元测试期间如何检查 UI 用户控件的类型?

详细说明:我正在将子视图加载到父视图上的 ContentControl 中。在测试期间,我想检查是否在正确的时间加载了正确的视图。我的视图位于单独的项目中,我不想将这些程序集的引用添加到我的父视图的测试项目中(耦合太紧密)。

这是我卡住的地方:

我应该使用模拟吗?

(WaitFor 是Justin Angel提供的辅助方法)

0 投票
2 回答
1431 浏览

silverlight - Silverlight MVVM 单元测试说明

谁能解释为什么当我使用调试器逐步完成单元测试时,在查看对象或属性时会得到空引用。例如:

[第 9 行] 当我将 viewModel 字段设置为 shell 视图的 DataContext 时,我得到一个“对象未设置为实例...”异常。我确定我的数据上下文是在我的 shell.xaml.cs 中设置的;整个文件:

我知道我做错了什么,但谁能解释一下?

谢谢,马克

0 投票
2 回答
866 浏览

wpf - MVVM WPF - 视图模型的使用

我有一个 WPF 数据输入表单,其中有 3 个组合框,需要填写主详细信息,如部门、职位和薪酬类型及其他信息。所有这 3 个主信息都需要从数据库中获取。我使用 LINQ to SQL 作为我的数据层。我已经为这些主信息(即 3 个 Viewmodels)建立了维护页面。

现在我的问题:

是否建议将这 3 个视图模型用于组合框(这会破坏 MVVM,因为有多个视图模型用于视图)并直接绑定它们,或者如果我只使用 3 个主要类的 observablecollection(部门、职位和薪酬类型)。

我真的很感激在这方面的任何帮助。我有很多相同场景的表格,我无法决定走哪条路线。

提前致谢。

拉贾

0 投票
2 回答
5356 浏览

silverlight - 在 Silverlight 3.0 中结合 .NET RIA 服务和 MVVM

在 Silverlight 3.0 中使用 .NET RIA 服务和 MVVM 时,RIA 服务中的元数据类型和 MVVM 模式中的 ViewModel 有区别吗?这些是同一件事还是应该分开?

元数据类型是部分实体类的密封内部类。那里似乎没有适当的分离,但元数据类型也可以用 Validation 的属性进行修饰,使其看起来像 ViewModel。

我四处寻找,但我没有看到任何关于这个的详细信息。

0 投票
1 回答
3494 浏览

c# - WPF MVVM 绑定 Checkbox.IsChecked 到字典中的命名项

我有一组复选框,它们都代表相同类型的不同选择(例如,它们都是不同的文件类型)。我觉得将每个复选框绑定到 ViewModel 中的单个属性是多余的,我更愿意将它们全部绑定到一个集合并使用绑定语法将每个复选框按键绑定到集合中的特定项目。我试图坚持 MVVM 模式,所以我不只是想变得懒惰并处理 Checked 事件或类似的事情。

有没有办法使用 WPF 绑定语法在集合中表达路径或键?例如,如果我Dictionary<string, bool>在 ViewModel 中将调用的 FileTypes 作为公共属性公开,是否有办法将其中一个复选框绑定到 FileTypes["aspx"]?如果我有一个更复杂的数据结构Dictionary<string, Dictionary<string, int>>怎么办?