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

0 投票
2 回答
474 浏览

wpf - MVVM:命令和 canExecute 标志

我正在使用带有动态标志 canExecute 的第一个命令。

我有我的保存命令,只有当用户进行一些数据更改时才必须启用它。

我正在考虑在制作模组时绑定一个动作,但我得到了错误,也许这不是正确的方法。

这是我的 xaml(如您所见,我的所有字段都在布局控件中):

这是我的 MainWindowVIewModel,我在其中定义了命令和 canExceute:

当我填充我的 observableColletion 时,我在绑定的用户控件中更改数据,我有:

ListaImpianti 以这种方式绑定到 xaml:

ListaImpianti 定义为:

但是永远不会调用启用保存..为什么?

皮耶罗

0 投票
2 回答
75 浏览

c# - CanExecute 应该做什么?

我认为对此有一个具体的答案。

如果我有一个命令绑定

如果我们在执行的方法中进行额外的数据验证,那么拥有一个可以执行的方法似乎是多余的。

0 投票
1 回答
782 浏览

c# - 为什么我的带有 ICommand 绑定的按钮在单击时不会立即显示为禁用?

我有一个简单的 WPF 程序,带有ICommand. 我发现该按钮没有像我预期的那样启用/禁用。我可以用一个人为的代码示例来最好地说明这一点:

在该方法中,我以一种会导致返回 false的方式Execute(object)触发事件。在那次通话之后,我希望该按钮立即被禁用,但直到调用之间的某个时间点它才会被禁用CanExecuteChangedCanExecute(object)RunWorkerAsync()和第二次模拟计算之间的某个时间点才会被禁用。

在后台工作人员的RunWorkerCompleted(...)事件处理程序中,我再次触发了CanExecuteChanged事件,但这一次会导致CanExecuteChanged(object)返回 true。在此调用之后,该按钮立即变为启用状态。

为什么当我触发CanExecuteChanged事件时按钮没有立即显示为禁用?

注意#1:第一个模拟计算代表我应该在主 GUI 线程上运行的代码。如果我删除此调用,按钮将按预期运行。

注意#2:我已经阅读了有关使用CommandManager.InvalidateRequerySuggested()强制代码调用该CanExecute(object)方法的信息。我在我的评论中表明这对我不起作用。考虑到我打电话给OnCanExecuteChanged(...),我认为这个建议无论如何都是多余的。

0 投票
1 回答
111 浏览

c# - 从另一个 ViewModel 的操作更新 CanExecute

我在哪里运行我的CreateBestPriceListCanExecute方法以便CanExecute在下面的代码片段中更新我的?

我的CreateBestPrice方法是使用数据库,它有一个在后台运行的自动数据库更新程序,有时会上传信息。那些时候我需要我CanExecute是假的,还有其他方法吗?

0 投票
1 回答
21303 浏览

c# - 如何在 WPF 上使用 ICommand 中的 CanExecute 方法

如何使用界面中的CanExecute方法?ICommand


在我的示例中,我有一个 SaveCommand,它只有在对象可保存时才启用。我的 Savebutton 的 XAML 代码如下所示:

这是我的保存类的代码:

ViewModel 中的 save 属性如下所示:

这个构造不起作用。当 isSaveable 为 true 时,按钮不会启用其自身。

0 投票
1 回答
556 浏览

c# - ApplicationCommand 的 CanExecute 不更新

我想用 MenuItem-Click 调用 ApplicationCommand:

在我的 ViewModel-Constructor 中,我初始化我的绑定:

现在我想处理该命令,但它根本无法执行。即使它应该总是正确的。

我还尝试在我的 init 函数之后更新所有绑定:

但我的 MenuItem 保持禁用状态。

谢谢!

0 投票
2 回答
961 浏览

c# - 根据网格选择切换按钮的“CanExecute”

我非常喜欢现代 UI 编程,现在我陷入了一个小型 C# WPF 应用程序,它基本上是一个 MVVM 设计模式的学习项目。

我有一个 DataGrid 和一些按钮来处理数据操作(添加、编辑、删除)。

我想要实现的目标:当没有选择网格中的行时,不应启用编辑按钮。

编辑按钮:

网格:

查看模型:

模型由 EF6 生成。

编辑:RelayCommand 类:

那么在以下情况下我该如何实现:未选择数据网格中的行或 SelectedKonto 为 null CanKontoEditExecute 属性更改为 false?

非常感谢你的帮助!

0 投票
2 回答
112 浏览

c# - 如何从其 CanExecute 处理程序中获取 MenuItem?

我怎样才能获得相关的访问权限MenuItem?它是动态创建的,所以我不能只通过 xaml 文件中的名称使用它。

0 投票
0 回答
87 浏览

wpf - WPF - 即使命令的 canExecute 返回 false 也保持菜单项启用

默认情况下,当命令的 canExecute 返回 false 时,菜单项会被禁用。是否可以覆盖此行为?即使canExecute返回false而不接触canExecute,我也需要保持菜单项启用。将菜单项的 isEnabled 设置为 true 无效。

0 投票
2 回答
132 浏览

c# - WPF CanExecute 取决于一个以上的因素

在我的应用程序中使用菜单中的CanExecute参数时,我面临着两难境地。CommandBinding

情况如下:应用程序本身可以在某些模式下运行,例如工作模式、审查模式等。根据模式,一些菜单项应该启用或不启用(因此,应该可以执行或不执行)。

到目前为止我所做的是为 CanExecute 创建 4 个事件处理程序:

由于某些菜单命令对两种模式都是通用的,因此某些菜单命令是每种模式独有的。

随着应用程序的发展,有更多的因素决定此时是否应该执行特定的菜单命令。我能想到的解决方案是:

  • 向事件处理程序添加布尔多绑定CanExecute,但我找不到此解决方案的任何示例,我相信这是不可能的。
  • 为更长的名称添加更多的事件处理程序,CanExecute实际上会使代码的可读性降低
  • 具有“每个菜单项”CanExecute事件处理程序,并将每个事件处理程序的代码基于一些布尔变量来确定它的结果

我知道启用菜单项可以在SubmenuOpened事件处理程序中完成,但是对于许多命令也有一个KeyGesture定义。

我的问题是:在这种情况下,最佳实践是什么,因此应用程序的逻辑(命令执行可用性)得到保证,但代码可读性也保持在合理水平?

感谢您的任何建议。