问题标签 [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 投票
8 回答
6238 浏览

silverlight - 如何使用 MVVM Light Toolkit 关闭带有取消按钮的 ChildWindow

我是 MVVM 的新手,并试图弄清楚如何使用MVVM Light Toolkit使用传统的Cancel按钮关闭 ChildWindow

在我的 ChildWindow (StoreDetail.xaml) 中,我有:

在我的 ViewModel (ViewModelStoreDetail.cs) 中,我有:

0 投票
2 回答
20420 浏览

wpf - 样式中的 WPF 交互触发器以调用视图模型上的命令

可能重复:
如何在样式设置器中添加混合行为

当我在样式中使用交互触发器时,我收到以下错误,“触发器不是样式类型的可附加元素”。任何解释此错误的实际含义以及如何解决它。

作为参考,请查看 MVVM Light 工具包的 EventToCommand 示例。

在这种特殊情况下,我使用来自 Infragistics 的 Timeline 控件,它将事件表示为 EventTitle,当单击 EventTitle 时,我想发出命令(请注意,Timeline 控件没有定义任何像 EventTitleClicked 这样的事件)。目前我可以通过使用事件并从后面的代码中调用我的 ViewModel 方法来实现该功能,而不是我想直接从 xaml 调用该命令。

0 投票
2 回答
16771 浏览

wpf - 如何绑定命令以双击 DataGrid 中的一行

我开发了一个 WPF UserControl,旨在用作选择列表,如下所示:

  • 绑定到实体集合视图(例如员工)的 DataGrid
  • DataGrid 上方的一个 TextBox,可用于过滤 DataGrid 中显示的项目。

我想公开一个命令,当用户双击 DataGrid 中的一行时将执行该命令。然后,容器可以通过对 DataGrid 中的 SelectedItem 执行某些操作来对此做出反应。

到目前为止,我已尝试按如下方式处理双击:

但是,当用户单击 DataGrid 标头时,仍会触发双击事件。我希望能够限制它,以便仅在双击 DataGrid 的主体时执行命令。有没有一种声明性的方式来做到这一点?

更新

我刚刚开始掌握 WPF 和 MVVM,并且真的在寻找有关如何实现这样的低级可重用组件的指导。任何一般性的建议也将被感激地接受和赞成。就目前而言,我假设我希望这个 UserControl :

  • 公开绑定到 DataGrid 的 SelectedItem 的依赖属性“SelectedItem”

  • 公开当用户双击一行时触发的 RoutedEvent "ItemDoubleClick" 或类似事件。

  • 实现ICommandSourceCommandHelpers.ExecuteCommandSource(this)从行中调用双击事件处理程序。

0 投票
2 回答
4971 浏览

wpf - WPF - 自定义控件 + ICommand(如何实现)?

基本上,我有一个自定义控件FooControl

我需要添加一些事件处理,但比起使用 RoutedEvent,我更喜欢使用 Commanding。不过,我不确定该怎么做。如果我想要它,以便当 Bar1Property (DependencyProperty) 发生更改时,它会引发 Execute 关联的执行属性。我通过 .NET Reflector 查看了 ButtonBase 代码,哇,这看起来太复杂了。添加命令这么复杂吗?显然,我还必须这样做,以便我的控件根据 CanExecuteChanged 是否更改来启用/禁用自身的某些部分。但我想那是另一部分。

到目前为止,这是我的 OnBar1Changed 函数...

0 投票
1 回答
598 浏览

c# - MVVM:我应该从我的 Execute 方法中检查我的“CanExecute”方法吗?

我了解 and 的使用CanExecute()Execute()但我想知道以下情况:

基本上,消费视图可以决定直接调用 DoFoo 方法(显然破坏了ICommand接口的点)并导致 NullReferenceException。这可能有点主观,但我希望有一种“标准”的方式来做这件事。

我们要不要:

  1. 通过if (MyBar != null)第一个防止可能的 NullReferenceException?
  2. 通过验证CanDoFoo()返回 true 来防止可能的 NullReferenceException?
  3. 假设消费视图行为正常并且已经验证它可以调用该DoFoo()方法?


作为旁注,我问这个的主要原因是因为当我编写单元测试时,我意识到有人可以通过调用Execute()方法而不调用他们的CanExecute()对应对象来破坏我的 ViewModel?显然,在我的单元测试中,我会检查是否可以在执行该方法之前执行该方法,但使用视图可能会决定忽略它。


更新:(场景 2)

作为对这个问题的扩展,我还想添加一个场景,即该DoFoo()方法不会因异常而中断,但可能会在逻辑上中断?

第二种情况实际上并没有中断(命令可以正常处理),但是,它在逻辑上崩溃了。那么,我们是否通过调用CanDoFoo()或假设消费视图正在运行来再次验证业务逻辑?(请记住,这只会破坏业务逻辑)。

基本上可以归结为......我们是否采取了预防措施来确保消费视图不会因行为不端而自取其辱?

0 投票
1 回答
1084 浏览

c# - 使用 ICommand 接口

我有一个实现特定接口的类(IOrganicEnvironment<T, K>

它还实现了 ICommand iterface

IOrganicEnvironment<T, K>接口提供了一堆方法和属性,我主要在ICommand Execute()方法内部使用。

但是我不需要任何客户端代码来从Colorizator实例调用这些方法和属性。

我能/应该做什么?如果我实现接口explicitly并制作它internal会有帮助吗?

0 投票
4 回答
1765 浏览

c# - WPF 中的命名命令

没有英语作为我的主要语言,我在命名方法和属性时经常质疑语法。

我将NextCommand其用作命令、NextCommandExecuted执行方法和CanNextCommand状态的名称。

这有意义吗,还是我应该使用更正确的命名约定?

0 投票
1 回答
1650 浏览

wpf - InputBinding 而不是 PreviewKeyDown

在我的代码的 MainView 中,我有这个事件来捕获 keyDown:

现在我想将它移到 XAML 中的 InputBindings 中。

我的第一次尝试:

代码隐藏:

没有任何事情发生。很可能 KeyDown-Event 由 Child-Element 处理。

是否可以在 InputBindings 中的 XAML 中设置 previewkeydown?而如何做到这一点呢?

0 投票
2 回答
2075 浏览

silverlight - Silverlight call command from button within listbox item template

I have seen this question asked a few times but I have not seen been able to find a complete answer to my scenario.

Within my project I have a user control that I have created as a listbox item. Within this user control I have a button

#xA;

the button has a click event specific to the view this basically expands or collapses a grid row based upon the state of visibility. I used an event here since it was specific to the ui. This button also has a command which is called in the VM.

VM code

#xA;

The issue I am having is the command on the button is "lost" or never called when inside the listbox item I have the view bound to the vm and if I place this command on any other button within the view the command is called. Can anyone help me understand how to call a Command bound to button within a listbox item?

Thank you in advance

0 投票
3 回答
915 浏览

silverlight - Silverlight - 如何根据视图中的属性调用命令

几个小时以来,我一直在努力解决这个问题,我希望有人能指出我正确的方向。

我的视图中有一个按钮,它有一个点击事件和一个附加的命令。click 事件根据当前状态将网格行的可见性设置为折叠或可见。

xml

click 命令调用一个方法来测试 MyDetail 部分的当前视觉状态并展开或折叠它

该命令从我的 viewModel 等调用 GetCFSDetailCommand

我卡住的地方是我只想在视图折叠时调用命令 GetCFSDetailCommand 。现在设置的方式是每次单击按钮时都会触发命令。我不能使用 ICommand CanExecute 因为我不想禁用该按钮。我将不胜感激有关如何实现这一目标的任何建议或想法。一种想法是测试背后事件代码中的可见性,然后基于该事件调用命令。如果这是正确的方法,我将非常感谢代码示例,因为我没有运气从事件中调用命令。

提前致谢