问题标签 [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 - MVVM:命令和 canExecute 标志
我正在使用带有动态标志 canExecute 的第一个命令。
我有我的保存命令,只有当用户进行一些数据更改时才必须启用它。
我正在考虑在制作模组时绑定一个动作,但我得到了错误,也许这不是正确的方法。
这是我的 xaml(如您所见,我的所有字段都在布局控件中):
这是我的 MainWindowVIewModel,我在其中定义了命令和 canExceute:
当我填充我的 observableColletion 时,我在绑定的用户控件中更改数据,我有:
ListaImpianti 以这种方式绑定到 xaml:
ListaImpianti 定义为:
但是永远不会调用启用保存..为什么?
皮耶罗
c# - CanExecute 应该做什么?
我认为对此有一个具体的答案。
如果我有一个命令绑定
如果我们在执行的方法中进行额外的数据验证,那么拥有一个可以执行的方法似乎是多余的。
c# - 为什么我的带有 ICommand 绑定的按钮在单击时不会立即显示为禁用?
我有一个简单的 WPF 程序,带有ICommand
. 我发现该按钮没有像我预期的那样启用/禁用。我可以用一个人为的代码示例来最好地说明这一点:
在该方法中,我以一种会导致返回 false的方式Execute(object)
触发事件。在那次通话之后,我希望该按钮立即被禁用,但直到调用之间的某个时间点它才会被禁用CanExecuteChanged
CanExecute(object)
RunWorkerAsync()
和第二次模拟计算之间的某个时间点才会被禁用。
在后台工作人员的RunWorkerCompleted(...)
事件处理程序中,我再次触发了CanExecuteChanged
事件,但这一次会导致CanExecuteChanged(object)
返回 true。在此调用之后,该按钮立即变为启用状态。
为什么当我触发CanExecuteChanged
事件时按钮没有立即显示为禁用?
注意#1:第一个模拟计算代表我应该在主 GUI 线程上运行的代码。如果我删除此调用,按钮将按预期运行。
注意#2:我已经阅读了有关使用CommandManager.InvalidateRequerySuggested()
强制代码调用该CanExecute(object)
方法的信息。我在我的评论中表明这对我不起作用。考虑到我打电话给OnCanExecuteChanged(...)
,我认为这个建议无论如何都是多余的。
c# - 从另一个 ViewModel 的操作更新 CanExecute
我在哪里运行我的CreateBestPriceListCanExecute
方法以便CanExecute
在下面的代码片段中更新我的?
我的CreateBestPrice
方法是使用数据库,它有一个在后台运行的自动数据库更新程序,有时会上传信息。那些时候我需要我CanExecute
是假的,还有其他方法吗?
c# - 如何在 WPF 上使用 ICommand 中的 CanExecute 方法
如何使用界面中的CanExecute
方法?ICommand
在我的示例中,我有一个 SaveCommand,它只有在对象可保存时才启用。我的 Savebutton 的 XAML 代码如下所示:
这是我的保存类的代码:
ViewModel 中的 save 属性如下所示:
这个构造不起作用。当 isSaveable 为 true 时,按钮不会启用其自身。
c# - ApplicationCommand 的 CanExecute 不更新
我想用 MenuItem-Click 调用 ApplicationCommand:
在我的 ViewModel-Constructor 中,我初始化我的绑定:
现在我想处理该命令,但它根本无法执行。即使它应该总是正确的。
我还尝试在我的 init 函数之后更新所有绑定:
但我的 MenuItem 保持禁用状态。
谢谢!
c# - 根据网格选择切换按钮的“CanExecute”
我非常喜欢现代 UI 编程,现在我陷入了一个小型 C# WPF 应用程序,它基本上是一个 MVVM 设计模式的学习项目。
我有一个 DataGrid 和一些按钮来处理数据操作(添加、编辑、删除)。
我想要实现的目标:当没有选择网格中的行时,不应启用编辑按钮。
编辑按钮:
网格:
查看模型:
模型由 EF6 生成。
编辑:RelayCommand 类:
那么在以下情况下我该如何实现:未选择数据网格中的行或 SelectedKonto 为 null CanKontoEditExecute 属性更改为 false?
非常感谢你的帮助!
c# - 如何从其 CanExecute 处理程序中获取 MenuItem?
我怎样才能获得相关的访问权限MenuItem
?它是动态创建的,所以我不能只通过 xaml 文件中的名称使用它。
wpf - WPF - 即使命令的 canExecute 返回 false 也保持菜单项启用
默认情况下,当命令的 canExecute 返回 false 时,菜单项会被禁用。是否可以覆盖此行为?即使canExecute返回false而不接触canExecute,我也需要保持菜单项启用。将菜单项的 isEnabled 设置为 true 无效。
c# - WPF CanExecute 取决于一个以上的因素
在我的应用程序中使用菜单中的CanExecute
参数时,我面临着两难境地。CommandBinding
情况如下:应用程序本身可以在某些模式下运行,例如工作模式、审查模式等。根据模式,一些菜单项应该启用或不启用(因此,应该可以执行或不执行)。
到目前为止我所做的是为 CanExecute 创建 4 个事件处理程序:
由于某些菜单命令对两种模式都是通用的,因此某些菜单命令是每种模式独有的。
随着应用程序的发展,有更多的因素决定此时是否应该执行特定的菜单命令。我能想到的解决方案是:
- 向事件处理程序添加布尔多绑定
CanExecute
,但我找不到此解决方案的任何示例,我相信这是不可能的。 - 为更长的名称添加更多的事件处理程序,
CanExecute
实际上会使代码的可读性降低 - 具有“每个菜单项”
CanExecute
事件处理程序,并将每个事件处理程序的代码基于一些布尔变量来确定它的结果
我知道启用菜单项可以在SubmenuOpened
事件处理程序中完成,但是对于许多命令也有一个KeyGesture
定义。
我的问题是:在这种情况下,最佳实践是什么,因此应用程序的逻辑(命令执行可用性)得到保证,但代码可读性也保持在合理水平?
感谢您的任何建议。