问题标签 [relaycommand]
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# - 如何测试 Relaycommand?
我正在阅读这篇关于 MVVM 的
MSDN 文章。我目前正在查看图 #15 中的 RelayCommand。假装我想测试这个 SaveCommand。我该怎么做?我正在使用 NUnit 和 Rhino Mocks 3.6
silverlight - Galasoft RelayCommand 未触发
我正在使用 MVVM Light 框架来构建 SL4 应用程序。我的简单应用程序主要由一个主视图(shellView)组成,它分为多个用户控件。它们只是 UI 的方便分离,因此它们没有自己的 ViewModel。
ShellView 包含一个 Keypad(自定义用户控件),其中包含多个 KeypadButtons(自定义用户控件)。
我很确定(因为我已经检查过)DataContext 设置正确,并且它被层次结构中的所有用户控件使用。(ShellView的Datacontext是ShellViewModel,Keypad的DataContext是ShellViewModel等)。
在 ShellViewModel 中,我有一个名为“ProcessKey”的 ICommand (RelayCommand)。
在键盘控件中,我有类似的东西:
KeypadButton 基本上是一个包含按钮的网格。捕获 MouseLeftButtonUp 事件并触发自定义“单击”事件。让我向您展示一些代码来轻松解释我在做什么:
现在,如果我为 innerButton_Click 的主体设置断点,我可以看到 Click 被正确捕获,并且它包含指向 RelayCommand 的点。但是,什么也没有发生:“单击(发件人,新的 KeypadButtonEventArgs());” 被执行,但仅此而已。
为什么会这样?不应该执行 RelayCommand 中定义的目标函数吗?可能是范围相关的问题吗?
在此先感谢,干杯,吉安卢卡。
c# - MVVM Light RelayCommand 参数
我在使用 GalaSoft MVVM Light 框架将参数传递给中继命令时遇到问题。我知道 mvvm light 的 relaycommand 实现不使用 lambda 参数,所以我做了一些研究并找到了一种人们通过执行以下操作来解决它的方法:
但是,我不断收到一条错误消息_projmenuItem_Edit = new RelayCommand(ProjEditNode);
,上面写着Argument 1: cannot convert from 'method group' to 'System.Action'
我错过了什么?
wpf - 多窗口 WPF 应用程序中的命令绑定
我的应用程序可以有多个设计器窗口。每个窗口由几个用户控件组成,这些控件在 RelayCommands 的帮助下进行动态通信。我创建了以下类作为指挥基础设施的骨干。
用户控件的每个视图模型都会在构造函数中执行类似的操作
但是,我完全忽略了应用程序可以有多个窗口这一点。当每个窗口打开时,都会为该特定窗口设置静态命令。
例子:
窗口 A 已打开 - 用户控件的构造函数设置了 RelayCommands,一切都很好。
窗口 B 打开-用户控件的构造函数设置了 RelayCommands。窗口 A 的命令绑定丢失!
因此,当我将选项卡更改为窗口 A(窗口为选项卡)时,没有任何命令起作用。
我需要一些想法,这样当我更改选项卡时,活动窗口总是会设置命令。我可以尝试将命令放在 tab_selection_changed 事件中,但不知何故它对我来说看起来很糟糕。有没有合适的方法来做到这一点?任何帮助深表感谢。
编辑:
这个问题在读者中被证明有点令人困惑。我不是想为一个命令创建多个订阅者。在任何给定点,只有一个窗口处于活动状态。这个窗口由几个用户控件组成——其中一些是在命令的帮助下动态加载的;但是每个命令都由单个视图模型类处理-因此没有多个订阅者。我的问题是应用程序可以在选项卡中加载多个窗口——在任何给定点只有一个窗口处于活动状态——但用户可以对不同的选项卡执行操作并使另一个窗口处于活动状态。由于视图模型构造函数分配了静态 RelayCommands,当加载每个新窗口时,静态命令被设置为新绑定。
窗口 A 打开的窗口 视图模型构造函数将静态命令绑定到其对象命令处理程序。窗口 A 处于活动状态。指挥就好。
窗口 B 加载的窗口 B 视图模型构造函数将静态命令绑定到其对象命令处理程序。窗口 B 处于活动状态。指挥就好。
现在,用户选择窗口 A 选项卡以将窗口 A 设置为活动状态。指挥是行不通的。当然它不会因为命令绑定到窗口 B 命令处理程序。
从理论上讲,静态命令可以处理这种情况,因为在任何给定点都只有一个活动窗口。但是怎么办??
wpf - 将命令绑定到 listboxitems
单击某个项目时,是否可以将中继命令绑定到列表框项目?
windows-phone-7 - 在 SelectionChanged 事件上使用交互触发器的正确方法
我有一个连接到事件的命令,它确实会触发,但是我在 CommandParameter 中得到的是先前选择的项目,或者它可能是在 SelectionChanged 完成之前选择的项目。
无论哪种方式,都不确定要更改哪些内容才能从事件中获取新选择的项目。
谢谢
c# - silverlight:如何通过单击项目旁边的按钮从列表框中的项目传递值
我有一个列表框,在它旁边显示一个项目和一个删除按钮。如何触发将参数传递给视图模型的中继命令,以便执行删除。
示例代码。
查看型号:
但它不起作用。我是 Silverlight 的新手,所以有人遇到过这种情况吗?你能分享吗?
wpf - 在 MVVM 中处理点击事件的最佳方法是什么?
在 MVVM 中处理点击事件的最佳方法是什么?有没有最好的方法?
我找到了两个解决方案:
使用中继命令:
亲:?;对比:如果我要更改诸如焦点之类的 ui 元素,则需要解决事件
附带行为:
亲:你有 RoutedEventArgs 用于 ui 上的更改;对比:访问其他控件?
现在我使用这两种解决方案。按钮中的 RellayCommand(带有用于 ui 更新的事件)和树视图的附加行为,以在用户单击时取消选择树视图项。
unit-testing - 执行 RelayCommand 时发送单元测试 MVVM Light Messenger 消息
如何对执行 RelayCommand 时调用了 messenger send 进行单元测试?
视图模型类:
单元测试:
mvvm - CanExecute 和 CanExecuteChanged,我必须用 RelayCommand 来实现这些吗?
我正在使用 MVVM-Light 并且我的中继命令运行良好,我刚刚读到我应该实施CanExecuteChanged
和CanExecute
. 虽然我找不到一个很好的例子。
有没有人有一个很好的例子来说明如何实现这些。
CanExecute 在无法执行时需要返回 False 但不会只是禁用按钮?
我什么时候执行CanExecuteChanged
?
任何人都有任何关于何时使用每一个的好例子,我的代码没有,但这篇博客文章指出我应该实现这些项目。
我有点困惑,正如我所说,我认为我只是将Enabled
属性或某些东西绑定到 ViewModel 中的属性,以便我可以禁用按钮或类似控件?
任何有助于理解的帮助将不胜感激。
编辑
这就是我现在所拥有的......它可以工作,但按钮并没有物理禁用,只有命令没有运行,因为我返回 false。我在构造函数中调用 CanExecuteMe 以强制 RaiseCanExecuteChanged 运行...
这在我的视图模型的构造器中运行
这是我的其余代码,我从一个例子中得到它。
这是我的 XAML