问题标签 [icommand]

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 回答
1437 浏览

silverlight - silverlight 通过棱镜命令,获取事件的事件参数?

我在 SL3 中有一个数据表单,它使用带有附加行为的 Prisms 命令来捕获事件。

(它非常紧跟这篇博文:http: //blogs.southworks.net/dschenkelman/2009/04/18/commands-with-attached-behavior-for-silverlight-3-dataform/#comment-607

基本上,一切都已连接并且工作正常,但是在视图模型中,我看不到如何访问事件的事件参数。

在 VM 的构造函数中,我定义了委托命令:

但是我需要访问 DataFormItemEditEndedEventArgs 属性才能定义需要做什么?我想根据用户是否取消或提交来执行不同的操作。

0 投票
2 回答
40497 浏览

wpf - ICommand 与 RoutedCommand

让我们将按钮Command属性绑定到自定义命令。

我应该何时实施ICommand以及何时派生RoutedCommand?我看到RoutedCommand 实现了 ICommand

在什么情况下我需要实现一个ICommand?MVVM模型呢?哪一个更适合这个目的?

0 投票
2 回答
7754 浏览

silverlight - Silverlight 中的 MVVM (ICommand)

请不要严格判断这个问题是以前讨论过还是间接在附近的巨大棱镜和 mvvm 博客中回答过。在 RelayCommand 或 DelegateCommand 类的 WPF 实现中,有一个这样的事件处理程序

但在命名空间的 SL 子集中没有 CommandManager 类。这就是我卡住的地方。在 SL 的 MVVM 采用中,我还没有找到解决方法(PRISM 对我来说还很复杂)。不同的简单 HelloWorldMVVM 应用程序根本不处理。

在此先感谢并为我的英语感到抱歉-)

0 投票
4 回答
143510 浏览

c# - ICommand MVVM 实现

所以在我正在做的这个特定的 MVVM 实现中,我需要几个命令。我真的厌倦了一个个实现 ICommand 类,所以我想出了一个解决方案,但我不知道它有多好,所以这里任何 WPF 专家的输入将不胜感激。如果你能提供更好的解决方案,那就更好了。

我所做的是一个 ICommand 类和两个将对象作为参数的委托,一个委托是 void(用于 OnExecute),另一个是布尔型(用于 OnCanExecute)。因此,在我的 ICommand 的构造函数(由 ViewModel 类调用)中,我发送了两个方法,并在每个 ICommand 方法上调用了委托的方法。

它真的很好用,但我不确定这是否是一种不好的方法,或者是否有更好的方法。以下是完整的代码,任何输入将不胜感激,即使是负面的,但请具有建设性。

视图模型:

指令:

0 投票
7 回答
22130 浏览

wpf - CommandManager.InvalidateRequerySuggested() 不够快。我能做些什么?

精简版

调用CommandManager.InvalidateRequerySuggested()需要比我想要的更长的时间才能生效(在 UI 控件被禁用之前有 1-2 秒的延迟)。

长版

我有一个系统,我将任务提交到基于后台线程的任务处理器。此提交发生在 WPF UI 线程上。

当这个提交发生时,管理我的后台线程的对象会做两件事:

  1. 它引发了多个视图模型响应的“忙碌”事件(仍在 UI 线程上);当他们收到这个事件时,他们将IsEnabled自己的标志设置为false. 在我的视图中,数据绑定到该属性的控件立即变灰,这是我所期望的。

  2. 它通知我的 WPFICommand对象,它们不应该被允许执行(同样,仍然在 UI 线程上)。因为没有像对象那样INotifyPropertyChangedICommand东西,我被迫调用CommandManager.InvalidateRequerySuggested()强制 WPF 重新考虑我所有的命令对象的CanExecute状态(是的,我确实需要这样做:否则,这些控件都不会被禁用)。但是,与第 1 项不同的是,与手动设置属性ICommand的 UI 控件相比,使用对象的按钮/菜单项/等在视觉上更改为禁用状态所需的时间要长得多。IsEnabled

问题是,从用户体验的角度来看,这看起来很糟糕;我的一半控件立即变灰(因为它们的IsEnabled属性设置为 false),然后整整 1-2 秒后,我的另一半控件也效仿(因为CanExecute最终重新评估了它们的方法)。

所以,我的问题的第 1 部分:
听起来很愚蠢,有没有办法让我CommandManager.InvalidateRequerySuggested()更快地完成工作?我怀疑没有。

很公平,我的问题的第 2 部分:
我该如何解决这个问题?我希望同时禁用所有控件。否则它看起来不专业和尴尬。有任何想法吗?:-)

0 投票
1 回答
1178 浏览

wpf - WPF:当绑定命令无法执行时,如何使按钮(splitbutton)启用?

我正在构建一个由两个重叠按钮和弹出窗口组成的自定义拆分按钮 - 像这样(图像显示了一些通用拆分按钮):

拆分按钮 http://windowsclient.net/wf/blogs/jfoscoding/splitbutton.PNG

当单击带有箭头的右侧时,我的 SplitButton 会打开弹出窗口,并在单击主按钮时执行 SplitButton.Command。

然而,在我的情况下,有时默认操作无法执行,在这些情况下,当单击主按钮时,我想打开弹出窗口。

我已经完成了,但问题是这样的:

  • SplitButton 是 ToggleButton 的子类
  • 在 ControlTemplate 中,我有一个 ToggleButton(底部)和 Button(较短,覆盖在顶部)
  • Button.Command="{TemplateBinding Command}"(所以我可以这样做<SplitButton Command="{Binding MyDefaultAction}">...
  • 问题:当命令无法执行时,整个 SplitButton 都会被禁用。

我想继续使用相同的命令,但要覆盖按钮的行为,以便在 Command.CanExecute() 返回 false 时它不会被禁用。我怎样才能做到这一点?

谢谢!

0 投票
1 回答
627 浏览

wpf - Xamly 在调用 RoutedCommand 时开始故事板?

有没有办法在使用 XAML执行 ICommand 时开始故事板?

0 投票
2 回答
7921 浏览

wpf - 将 MouseBindings 添加到数据绑定 WPF ListView 中的项目

当用户单击 ListView 中的项目时,我试图在我的 ViewModel 中执行命令。当我ListViewItem在 XAML 中添加 a 时,我可以将 a 添加MouseBinding到它的InputBindings.

但是如何在数据绑定的 ListView 中实现呢?

我已经通过定义样式ListViewItem和替换ControlTempalte. ListViewItem不过,我希望有一个更简单的解决方案。

真诚的,迈克尔

0 投票
1 回答
409 浏览

wpf - ICommand _canExecute 问题

我有以下代码,它不会编译,因为编译器无法确定我的 CanExecute 方法的返回类型。有人可以帮我看看有什么问题吗?

0 投票
2 回答
1820 浏览

c# - WPF中的命令,实现问题

我知道我已经对此提出了问题,但有些事情只是令人困惑。我正在做一个关于 WPF MVVM 模式的教程,但似乎我做错了,因为在教程中,它没有详细介绍如何实现 ICommand 接口。(不确定它到底有多正确?!!)

我有以下 ICommand 实现:

现在这个用途:

我无法弄清楚我的ViewCommand类的构造函数应该做什么?在 StartViewModel类中,它在构造函数中使用 lambda 表达式,因此需要一些委托,但我不确定它是什么以及如何与 Execute 和 CanExecute 一起工作。我放了一个Action<object>,但它可能是错误的......

最后,有人可以向我指出一个关于如何实现 ICommand 的教程来解释它吗?

谢谢!