问题标签 [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.
silverlight - Silverlight MVVM ListBoxItem IsSelected
我有一组绑定到 ListBox 的 ViewModel。我正在尝试将每个的 IsSelected 属性绑定在一起。在 WPF 中,它通过设置样式来工作:
这在 Silverlight 中不起作用。我怎样才能做到这一点?
.net - WPF MVVM + UserControl 与后面的代码
出于某种原因,我在 MVVM WPF 应用程序中通过我的 ViewModel 绑定自定义用户控件时遇到问题。基本控件是一个带有三个文本框的日期输入表单。我正在使用用户控件的代码隐藏来捕获 textchange 事件以及一些操作。出于某种原因,向属性添加绑定永远不会触发。
用户控件的 XAML:
代码隐藏:
{
}
当我像这样在 DataTemplate 中创建用户控件时:
我的 ViewModel 中的 BirthDate 的获取和设置永远不会设置。VM 上的 BirthDate 是一个字符串。
silverlight - MVVM 模式中的 Silverlight 子窗口
我正在尝试使用 Silverlight (3) 中的 MVVM 模式从 ChildWindow/popup 中获取数据的正确方法。例如:我有一个带有数据输入表单的主页,我想打开一个包含客户列表的弹出窗口。当用户选择客户时,我想将所选客户转移到主页。这就是我目前正在使用的(示例)代码:
主页
子窗口
这是正确的方法还是有更“简单”的方法?
干杯,韩国
naming-conventions - Model-View-ViewModel (MVVM) 类和实例的名称应该有多冗长?
一般来说,我更喜欢详细说明 .NET 类和实例名称,但有时(引用 Mike Woodhouse 的话):
过于冗长往往会掩盖语法,而语法很重要。
我觉得我真正误入了过度冗长制度的第一个地方是在 Silverlight 和 WPF 应用程序中实现模型-视图-视图模型 (MVVM) 模式。
例如,我从一个 EnumerableRange 模型对象开始:
然后,我想创建一个控件,允许我显示此类以供用户输入。因此,我创建了一对与视图相关的类:
- 一个 EnumerableRangeControlView 用户控件(在 XAML 中),以及
- POCO EnumerableRangeControlViewModel
现在,我分别在父 View 和 ViewModel 中使用这对。使用 MVVM,视图实例不需要名称,但我的 ViewModel 实例现在命名为:
IndependentVariableEnumerableRangeControlViewModel。
事情开始失控了!你会怎么办?
mvvm - CommandSink 背后的隐喻是什么?
我正在研究Josh Smith 在 CommandSink 上的代码和文章,这是一种简化在 MVVM 上下文中使用命令的解决方案,似乎非常有用。
但我觉得我错过了一些关于这个概念的东西,因为我不理解“sink”这个词指的是什么,例如
- 命令沉入ViewModel 背后的代码?
- 命令在集合中,例如盘子在水槽中?
- 或者这是保持 View 和 ViewModel同步的文字游戏?
wpf - WPF MVVM:ResourceDictionary 的约定优于配置?
更新
本着 StackOverflow 的 wiki 精神,这里有一个更新:
我在下面添加了 Joe White 的 IValueConverter 建议。它就像一个魅力。
我已经编写了一个“快速入门”示例,它使用一些廉价的字符串替换来自动映射 ViewModels->Views。如果没有找到代表 ViewModel 的 View,则默认为“正在建设中”页面。我将这种方法称为“WPF MVVM White”,因为这是 Joe White 的想法。这是几个屏幕截图。
第一张图片是“[SomeControlName]ViewModel”的案例,基于纯命名约定,有一个对应的“[SomeControlName]View” 。第二种情况是 ModelView 没有任何视图来表示它。不再有长 ViewModel 到 View 映射的 ResourceDictionaries。现在是纯粹的命名约定。
我在这里发布了该项目的下载: Mvvm.White.Quickstart.zip
原帖
我在周末阅读了 Josh Smith关于 WPF MVVM的精彩 MSDN 文章。它注定会成为经典。
我花了一段时间才理解要求 WPF 呈现ViewModel的魔力。
这就像说“这是一个类,WPF。去找出使用哪个 UI 来呈现它。”
对于那些错过这个魔法的人,WPF 可以通过在 ResourceDictionary 映射中查找 ModelView 的View并拉出相应的View来做到这一点。(向下滚动到图 10 提供视图)。
我立即跳出来的第一件事是已经有一个强大的命名约定:
我的问题是:
由于ResourceDictionary可以以编程方式进行操作,我想知道是否有人设法使用 Regex.Replace 整个东西,所以查找是自动的,并且任何新的 View/ViewModels 都通过它们的命名约定得到解决?
[编辑] 我想象的是对 ResourceDictionary 的钩子/拦截。
...还考虑在启动时使用互操作提取*View$
和*ViewModel$
类名在代码中构建 DataTemplate 字典的方法:
.net - 从 IValueConverter 获取对 ViewModel 的引用
是否有一种干净和/或可接受的标准方式从 IValueConverter 引用 ViewModel,或者这是否破坏了 MVVM 模式?基本上,我想根据 ViewModel 的其他属性转换 UI 中的绑定数据。我想这与如何从 IValueConverter 引用窗口/页面是同一个问题,因为对控件的引用没有传递给 Convert/ConvertBack 方法。
c# - 有人可以解释这个 C# 结构:base.Executed += (s, e) =>
我正在研究Josh Smith 的 CommandSink 示例,base.Executed += (s, e) =>...
结构让我很困惑,有人能帮我弄清楚吗?
我的理解:
- base.CanExecute 是继承类 CommandBinding 上的事件
- += 正在向该事件添加委托
- 委托是遵循该行的匿名函数
我不明白的是:
- (s,e) 是该函数的签名吗?
- 变量 s 在哪里使用?
这是上下文中的代码:
c# - 在 MVVM 中,ViewModel 或 Model 是否应该实现 INotifyPropertyChanged?
我处理过的大多数 MVVM 示例都有Model实现 INotifyPropertyChanged
,但在Josh Smith 的 CommandSink 示例 中 ViewModel 实现了INotifyPropertyChanged
。
我仍在认知上将 MVVM 概念放在一起,所以我不知道是否:
- 您必须将其放入
INotifyPropertyChanged
ViewModel 才能开始CommandSink
工作 - 这只是规范的偏差,并不重要
- 您应该始终实现模型
INotifyPropertyChanged
,这只是一个错误,如果将其从代码示例开发为应用程序,则可以更正
其他人在您从事的 MVVM 项目上有何经验?
wpf - WPF - 从数据中获取超链接命令?
在 WPF 中,如何获取对超链接应从对象属性调用的命令的引用?
我正在使用 MVVM 模式创建一个 WPF 应用程序。主窗口中的列表框显示超链接。单击时,每个超链接都会调用视图模型的 ICommand 属性之一。如何指定应该调用哪个 ICommand?
这是我到目前为止所尝试的:超链接包含在 ViewModel.Hyperlinks 属性中,该属性绑定为列表框的 ItemsSource。Hyperlinks 属性包含 MyHyperlink 类型的对象:
MyHyperlink.ViewModelCommand 属性包含单击超链接时应调用的视图模型 ICommand 的名称。我想使用该值为 WPF 超链接控件的 Command 属性指定 PropertyPath。我尝试使用命令名称为列表框创建一个 PropertyPath 资源,但 WPF 不会接受。这是我的 XAML:
如何指定单击超链接时应调用哪个 ICommand?我是创建一个资源(如上所示),还是它以其他方式完成?我需要在 XAML 中执行此操作——我不想诉诸代码隐藏。谢谢你的帮助!