问题标签 [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 - Mark object (not entity, not framework) as dirty in WPF ViewModel
In my viewmodel, there is a property CurrentObject
of the type SomeDomainType
which is serializeable.
There is a form to edit its properties, and one of the buttons is "Commit Changes", databound to the ICommand CommitChangesCommand
.
Now I expect this button to be active (via CanCommitChangesCommand()
, properly wired with Josh Smith's RelayCommand
) only when the object has been modified, that is, the object is "dirty".
Saying it again, what I want to ask is:
"How can I mark an object as dirty so that I could have a
private bool ThatPropertyIsDirty()
method to check that inside someCanExecute()
?"
wpf - MVVM RelayCommand 可以执行
我正在实现一个带有执行和 canExecute 部分的 RelayCommand。RelayCommand 在没有 canExecute 部分时工作,但是当我添加 canExecute 部分时,命令会锁定按钮。RelayCommand 只检查按钮是否可以执行,只要 CanExecute 部分为真。一旦 canExecute 部分变为假,按钮就不能再被点击,即使它应该被点击。如何确保每次单击按钮时它都会控制是否可以执行,并且一旦无法执行就不会永远锁定它?
wpf - 使用 ICommand 实现 CanExecute MVVM 灯
我有一个程序,其中一个按钮只有在相应的 userControl 具有焦点时才应该处于活动状态。
我正在使用 MVVM light,并获得了一个实现 ICommand 接口的命令。
我曾尝试使用 Keyboard.FocusedElement,但这没有返回任何内容。
这是命令的代码(请注意,它现在只是返回 true 以使其正常工作,这当然是我要修复的问题):
从视图模型:
最后是一些 XAML:
我还没有发布 userControl 的 xaml,但想法是当 userControl 有焦点时,CanExecute 应该是真的。我认为它可以与 Keyboard.FokusedElement 一起使用,但我错了。我能做些什么?
先感谢您。
wpf - 将可见性绑定到 ReactiveCommand CanExecute
我的 xaml 中有几个 Tiles(TileLayoutControl 类)(此示例中仅显示 2 个),其 Visibility 绑定到 Boolean Properties 并通过 BooleanToVisibilityConverter 进行转换。
这工作得很好。我的问题是
我可以将可见性绑定到命令,以便我可以消除对这几个布尔属性的需要吗?
类似于将 Visibility 绑定到Command.CanExecute
如果是,我该如何实现?任何帮助将不胜感激!谢谢。
视图模型
c# - Mvvmlight RelayCommand 中 canExecute 的奇怪行为
我正在学习 Mvvmlight,并且对它canExecute
的 RelayCommand 感到很困惑。
基本上,我有一个Button
和一个PasswordBox
,view
和一个Command
。viewModel
如果PasswordBox为空,我想要禁用Button。我的解决方案是将PasswordBox作为CommandParemeter传递给Button,然后在canExecute方法中接收PasswordBox并指定它是空还是空。我首先声明一个命令:
然后在以下实例化它Class Constructor
:
最后实现如下canExecute
方法:
上面的 canExecute 方法不起作用,因为System.Reflection.TargetInvocationException
会抛出未处理的异常PresentationFramework.dll
。
所以我尝试用 . 包装上面的代码try...catch
。这一次,它就像魔术一样工作:
我对这种行为感到很困惑canExecute
,有什么想法吗?
wpf - ICommand 不使用 CanExecute 更新按钮上的 IsEnabled
我有一个绑定到命令的非常简单的按钮
我的命令代码
该代码有效地阻止了基于 CanExecuteSaveCommand 运行的命令,但该按钮永远不会被禁用,有没有办法实现这一点?
c# - MVVM Light - RaiseCanExecuteChanged 用于 RelayCommand
我正在使用 MVVM 模式。我是我的观点,我有个人详细信息的文本框,其中之一是 idBox。此外,该视图由几个按钮组成,其中之一是 editModeBtn。
我希望只有在 idBox 中有一个有效的 int 时才启用 editModeBtn。
我的 editBtn 的 Xaml(在视图内)如下所示:
在相应的viewModel中,我有以下代码:
此外,在 CanExecute 方法(在我的情况下为 CanEdit)中,我想检查参数(id)是否设置为有效的 int,然后返回 true。假的,否则。
基本上,我希望在每次从 idBox 写入或删除某些内容时调用该命令的 canExecute 方法。我应该把命令的 RaiseCanExecuteChanged() 放在哪里?如果我没有使用过 MVVM,我可以将它放在 textBox textChanged 事件中,但这里不是这样。从未使用过 RaiseCanExecuteChanged,所以只想确保。谢谢!
eclipse-rcp - Eclipse Luna:未调用处理程序的 @CanExecute 方法
我在 Eclipse Luna RCP 中的命令处理程序有问题。
在我的 E4 应用程序模型中,我定义了一些仅在特定情况下必须启用的命令和相关处理程序。出于这个原因,在我的处理程序 POJO 中,我实现了用@CanExecute
我检查所需条件的位置注释的方法。
我还定义了与这些命令相关的菜单和工具栏项。
问题是我的@CanExecute
方法没有被正确调用,因此菜单和工具栏项没有相应地启用/禁用。
特别是,对于菜单项,这些@CanExecute
方法仅在应用程序启动时被调用几次,但在那之后就不再调用了。
相反,对于工具栏项,这些@CanExecute
方法仅在活动上下文更改时调用(例如,当更改活动部分或打开新外壳时)。
在开普勒中,行为完全不同(并且按预期工作):
- 对于菜单项,
@CanExecute
每次显示菜单时都会调用这些方法 @CanExecute
对于工具栏项目,有一个计时器每 400 毫秒调用一次方法
这是 Luna 中的已知错误吗?您知道实现预期行为的任何可能的解决方法吗?
谢谢!
c# - 调用“command.Execute”会先隐式调用 CanExecute 吗?
我只是在没有先调用 CanExecute 的情况下实现了对命令的 Execute 调用。
从调试中我会告诉 CanExecute 被调用了;但是,我不确定这是否是巧合。
我想知道我是否可以依赖这样一个事实,即每当我手动提出 Execute 时都会隐式调用 CanExecute ,或者我是否应该确保自己调用 CanExecute ?
eclipse-rcp - Eclipse Luna:由于上下文错误,未调用处理程序的 @CanExecute 方法
我将我的 Eclipse RCP 应用程序从 Juno 升级到了 Luna。这导致我的应用程序工具栏被永久禁用。
我在这个线程中找到了一个解决方案:Eclipse Luna: Handlers' @CanExecute methods not called(解决方案:手动生成事件)。但是,唉,治愈没有奏效:-(。
我使用调试器深入研究以找到失败的根本原因。我发现在HandlerServiceHandler.class方法setEnabled(Object evaluationContext)失败。这是由于从评估上下文中提取了错误的执行上下文。
我将详细介绍:发生的情况是,在我对项目浏览器执行选择后,我发送了我的事件。setEnabled(Object evaluationContext)查找与我的工具栏项关联的相关命令的处理程序。但是,它会在项目浏览器的 * 执行上下文 * 中查找处理程序。处理程序不在此上下文中,因此该方法失败!
关于如何解决这个问题的任何想法。我真的不明白我如何能很好地控制我的上下文。
谢谢!!!!!