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

0 投票
2 回答
2365 浏览

wpf - RelayCommand 参数和绑定

看法:

使用 WPF(MVVM) 玩一个基本的计算器。我有 1 个文本框用于第一个数字,1 个文本框用于第二个数字,1 个文本块用于结果和 1 个按钮来执行 AddCommand 并返回结果。将这些控件绑定到正确数据的正确 XAML 语法是什么。

模型:

视图模型:

应 Vlad 的要求编辑新版本的代码

模型:

视图模型:

查看 XAML:

查看后面的代码:

我尝试了所有绑定模式,但没有任何结果。我这里还有一个问题,在这种情况下,默认绑定模式是什么?

我什至认为它与计算的数据类型有关,所以我从 double 切换到 int,但仍然无法正常工作。

0 投票
1 回答
3170 浏览

c# - 为什么 RelayCommand RaiseCanExecuteChanged 在单元测试中不起作用?

我正在使用 Nuget (4.1.23.0) 上可用的当前版本的 MvvmLight,并且在单元测试中调用 RaiseCanExecuteChanged 似乎没有做任何事情。场景很简单,我有一个命令:

我在视图模型构造函数中新建了它,并将它指向一些私有方法:

然后在SomeRequiredProperty我调用 RaiseCanExecuteChanged 的​​设置器中:

现在在单元测试中,我执行以下操作:

测试失败,因为我的事件处理程序没有触发。这是为什么?

更新:该行为确实在运行时起作用。

0 投票
2 回答
231 浏览

c# - 带有 MVVM 的上下文相关命令

我有一个自定义组件,它基本上是一个带有附加按钮的文本框。该按钮应该对文本框执行操作;例如,单击按钮可以用一些随机字符串填充文本框。

文本字段绑定到 ViewModel 中的属性。它基本上看起来像这样:

三个自定义组件,每个组件都有一个附加按钮

设置对组件通用的命令的最佳方法是什么?

到目前为止,我所做的是RelayCommand在我的 ViewModel 中有一个需要参数的通用。每个按钮都将其命令设置为该单个命令,我使用该CommandParameter属性添加一些关于我实际谈论的文本字段组件的信息。然后 ViewModel 使用该信息找出正确的属性并更改其值(通过绑定更新文本框)。

虽然这很好用,但我不喜欢我必须手动插入有关相关文本框或上下文的信息。理想情况下,我希望在已经知道它正在谈论哪个文本框或绑定属性的上下文范围内执行命令。有没有办法做到这一点?

我遇到的另一个问题是我想将按钮操作绑定到一个键盘命令。所以当我关注一个文本框并按下一个快捷键时,我希望它表现得好像我点击了正确的按钮,即执行命令并传递正确的上下文信息。我的替代方法是将其放入代码隐藏中,基本上从当前焦点中提取命令参数,但我更喜欢更清洁的解决方案。

有什么好方法可以使这个工作与 MVVM 一起工作吗?

0 投票
1 回答
1710 浏览

mvvm-light - 为什么不工作:RelayCommand RaiseCanExecuteChanged

当我PressCommand.RaiseCanExecuteChanged();TimerOnElapsed方法中调用时,什么也没发生。

可能是什么问题呢?(GalaSoft.MvvmLight.WPF4 v4.0.30319 和 GalaSoft.MvvmLight.Extras.WPF4 v4.0.30319)

这是我的测试代码:

先感谢您

0 投票
1 回答
668 浏览

windows-phone-7 - 如何在视图模型中声明 MVVM RelayCommand

如何在set中使用relay命令,我使用下面的方式,在set方法上抛出接口bug

0 投票
1 回答
149 浏览

wpf - 如何将三步操作更改为 WPF 中的命令?

我正在学习 MVVM 设计模式,所以我试图将一些操作更改为命令。
这里举个例子,MainWindow有一个Canvas作为容器,用户可以通过拖拽来绘制矩形。所以我写代码如下

因为也许我想添加 Undo 功能,以便在 Undo 调用后矩形会消失,所以我想将这 3 个步骤变成一个命令。我该怎么做?谢谢。

0 投票
3 回答
30763 浏览

wpf - 如何将命令绑定到 MenuItem (WPF)?

这是我在 View.xaml.cs 中的代码:

这是我的 View.xaml 中的一些代码:

当我运行程序并选择关闭菜单项时,没有任何反应。CloseCommand 代码甚至没有被执行。

0 投票
2 回答
13022 浏览

wpf - 如何获取 InputBinding-Command 的发送者

我有这个 xaml 代码:

这就是我的 ViewModel 中的代码:

现在是我的问题,我怎样才能得到这个命令的发送者?

0 投票
1 回答
527 浏览

wpf - relaycommand CanExecute 返回不正确的值

我创建了一个非常标准的 MVVM Light RelayCommand,canExecute 参数为:

() => (customer.Regions.Count > 0)

必要时我打电话RaiseCanExecuteChanged();给 canExecute 并没有正确重新评估。然后我也像这样手动调用它:var canExecute = myCommand.CanExecute(null);,它仍然是错误的。在 I do 之后的下一条语句中var foo = (customer.Regions.Count > 0),它返回正确的结果。这里发生了什么?

命令定义:

customer 是实例化类时设置的私有属性。

0 投票
1 回答
107 浏览

wpf - 如何使用字段初始化器访问和访问 wpf 控件

我在这里,

vs2010 抛出编译时错误,“p”不能指向非静态字段,我无法访问网格和文本框..这些控件是 wpf..我也无法为员工创建对象..

而 Rcommand 类是..

我想访问那个 Add() 方法,而我又想访问文本框和数据网格..我应该怎么做?

或者我应该如何拥有 RCommand 类..?