问题标签 [canexecute]
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.
wpf - 使用 CommandManager 时对 ICommand.CanExecute 进行单元测试
(部分)我的 ICommand 实现是:
这在调用 RaiseCanExecuteChanged() 时在 UI 中工作正常,但在单元测试中我想知道 UI 是否已被通知它应该调用 CanExecute 方法。订阅 CanExecuteChanged 事件不起作用,因为使用 CommandManager 时不会触发此事件。有谁知道如何测试 CommandManager.InvalidateRequerySuggested 是否已被触发?
我也在考虑不使用 CommandManager 并将我的实现更改为:
优点似乎是这只会触发针对特定命令调用 CanExecute,而不是针对向 CommandManager 注册的所有命令。有人可以确认我对 CommandManager 的理解是正确的吗?有谁知道这种“正常” CanExecuteChanged 事件的方法的缺点?
c# - Jenkins 失败的单元 CanExecute 测试的方法不确定
我们对项目中的各种命令进行了很多 CanExecute 测试。当我们使用 Visual Studio 测试或 AxoCover 时,所有测试都正确通过。
我们尝试在执行“CanExecute”之前添加一些先前的对象初始化,有时它会起作用(或者我们认为)。
我有一个测试:
有时(不总是)当 Jenkins 进行构建和运行单元测试时,一些可以执行的测试失败并显示消息:
问题是这种情况只发生在 Jenkins 上,而且非常不确定。
编辑:
好的,还要考虑一件事。属性 InEditMode 放置在 SomeModelView 的基父类中。
我在示例中为您合并了代码。
我们认为这可能是相关的,该对象认为在基类初始化完成之前已初始化。但这很难用詹金斯检查。
解决方案
我创建了一个属性类:
然后我可以为每个“CanExecute”测试这个属性:
wpf - 如何根据更改的属性激活命令
我的 WPF-(弹出)控件中有两个按钮。
首先是一个取消按钮,它只是关闭弹出窗口并始终启用。
第二个是确定按钮,只有在三个(绑定)文本框之一发生更改时才应启用该按钮。
问题是,在文本框失去焦点之前,绑定属性的值没有改变。所以该按钮直到那时才处于活动状态,因此使用鼠标不可点击。
负责的视图模型代码:
由于其中一个属性被更改并且相应的文本失去焦点,一切正常。
有没有办法让这个 mPropertiesChanged 为真,而 textbos 仍然有焦点?
wpf - Model的属性发生变化时如何触发ViewModel的CanExecute方法?
我的问题是如何从模型中触发 ViewModel 方法。
我正在使用 MVVM 开发 WPF 应用程序。所以我有一个按钮,,SubmitMedPrescCommand
(使用中继命令实现)和一个SelectedMedPrescRepeat
绑定到模型的组合框()。当用户选择下拉菜单时,会在模型的属性中引发 PropertyChange 事件,但我需要调用 CanExecute(在 ViewModel 中)才能启用按钮。
下面列出了我的代码示例。任何帮助,将不胜感激 !提前致谢 !
视图模型是这样的:
以及属性所属的模型:
c# - 如何为 WPF 双文本框正确设置 CanExecuteCommand?
对于此示例,我使用Prism.WPF。我的 WPF 中有一个 TextBox 和一个按钮:
和相应的属性:
如果用户更改值以输入正确的双精度值,则方法应可执行:
我试图将双精度转换为带有“。”的字符串。作为分隔符并检查string.IsNullOrEmpty()
,但这并没有导致成功。如何正确检查用户是否输入了有效的双精度值?