问题标签 [relaycommand]

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 投票
0 回答
354 浏览

wpf - 如何将 RelayCommand 绑定到 IsChecked 属性?

到目前为止,我不得不依靠事件背后的代码来检查或取消选中按钮(例如粗体字体工具栏按钮),我想知道是否有更好、更简洁的方法来使用 RelayCommand 来完成它,因为它已经绑定到 RelayCommand 用于执行和可以执行。

使用 RelayCommand,可以通过提供 CanExecute 委托轻松启用或禁用按钮。有没有办法将另一个委托绑定到按钮(或菜单)的 IsChecked 属性?

0 投票
1 回答
1437 浏览

wpf - 全局键绑定到活动视图的 Viewmodel 中的命令

我有这个MainWindow.xaml

我有几个带有自己视图模型的子视图。例如,我有 a FileViewwith aFileViewModel和 a DataViewwith a DataViewModel。在两个视图模型中,我都有一个实现OpenCommand

当我按Ctrl+时O,我希望OpenCommand为活动视图的视图模型执行命令。因此,如果我按下我的 , 中的键FileViewOpenFile()就会被执行。如果我在我的 , 中输入密钥DataViewOpenData()将被执行。一种MDI行为。

上面的代码不起作用。

你如何实现这种类型的键绑定/命令处理?

0 投票
1 回答
976 浏览

wpf - 命令未访问绑定到 ViewModel - wpf

我有一个 Wpf DataGrid,通过单击键盘上的删除键,我想在我的 ViewModel 中调用一个函数,DataGrid 绑定到 ViewModel 中的一个列表。代码如下所示:

数据网格:

此类的 DataGrid 的 DataContext 在其中包含 ViewModel

我的视图模型:

在 XX 类上有一个名称(字符串)和值(整数)

绑定到命令不起作用,并在 InitializeComponent() 上给出错误消息:

如果我按以下方式编写命令的链接,则不会给出错误,但不会通过按删除来进入函数:

0 投票
1 回答
2427 浏览

wpf - MenuItem 可见性绑定到 RelayCommand CanExecute 与参数

我在 WPF MVVM 应用程序中使用 Josh Smith RelayCommand 类在 ViewModel 中创建命令:

例如:

我从 ContextMenu 调用这个命令:

一切正常,除了我的 MenuItem 仍然可见但被禁用,我想将 Visibility 设置为 Collapsed 以便CanExecute在 Relay Command 返回 false 时我的 MenuItem 不会显示。

我尝试设置与 Visibility 属性的绑定,但我不知道如何CanRemoveAll(object obj)使用参数绑定到我的方法。我也考虑过使用 DataTrigger,但我不知道该怎么做。

这是我CanRemoveAll在 ViewModel 中的方法:

从 RelayCommand 类:

任何帮助将不胜感激,

0 投票
2 回答
309 浏览

c# - 为什么我的 RelayCommand 不会触发和 ObservableCollection 捕获选定的值?

我是使用 RelayCommands 的新手(遵循 Josh Smith 的 MVVMDemoApp)并且可以使用一些帮助来识别我的错误。

我有两个列表框。当第一个中的一个项目被选中并按下“添加”按钮时,将执行 AddCommand 并且第二个列表的 ObservableCollection 将 selectedItem 添加到其中。

我的观点:

我的视图模型:

提前致谢!

另外:为什么会:

让我的添加按钮永久禁用?我没有做什么让按钮知道一个项目已被选中?这似乎是我理解为什么命令永远不会触发的相同缺失的链接。

再次感谢!

0 投票
1 回答
766 浏览

c# - 在后面的代码中将参数传递给 RelayCommand

我知道 SOF 和 Google 上都有多个标题相似的帖子,但请耐心等待我一分钟。

我正在关注这篇文章为我的网格视图创建一个上下文菜单:http ://www.koaxkoaxkoax.com/ribbit/2010/09/creating-dynamic-menus-in-wpf.html

我在中创建 HierarchicalDataTemplate UserControl.Resources,我在 gridview 的资源中有一个空菜单,然后我在实际的上下文菜单中引用它。XAML(gridview 的第一部分)如下所示:

在后面的代码中,我FindResource用来获取对菜单的引用并创建一个与和ViewMenuItem处于同一级别的对象。然后我遍历一个列表并为每个列表项创建一个 -object 并将它们附加为子对象。这看起来就像我想要的那样。但我无法让实际功能正常工作。foobarViewMenuItem

foreach 循环的内部(我在其中创建子对象)如下所示:

特别是包含的行p=>_view.SetSeriesExecute(p)让我感到困惑。我发现了很多看起来一模一样的例子。当我运行我的程序并单击其中一个子元素时,该SetSeriesExecute方法被正确调用 - 但参数始终为空。这并不奇怪,因为我实际上从来没有提供一个类型的对象Series作为参数。我试图在 RelayCommand 构造函数中提供参数,如下所示p=>_view.SetSeriesExecute(mySeriesObject):它编译,但从SetSeriesExecute未被调用。

我的目标很简单(至少我认为是这样):当程序对单击上下文菜单中的元素做出反应时,方法 ( SetSeriesExecute) 需要知道用户实际选择(=单击)了哪个项目. SetSeriesExecute不幸的是,尽管进行了 4 小时的认真研究,但我无法弄清楚我可以在哪里以及如何向. 其他人似乎都理解了可用的例子这一事实并没有让我对自己感觉特别好,我对每一个提示都表示终生感激。

最好的彼得

0 投票
1 回答
297 浏览

.net - 代表和中继命令

我以为我已经了解了委托,因为它创建了对方法的引用,然后可以被“外部”代码(另一个 dll/项目)引用。

现在我正在使用 MVVM,我看到这个叫做 RelayCommand 的东西,它看起来好像它正在以与传递委托相同的方式传递一个方法作为参数。这怎么可能?

我正在查看的代码是

并且 RelayCommand 对象是

因此,由于没有委托,我可以假设 Action<> 对象发生了一些诡计吗?

0 投票
2 回答
829 浏览

silverlight - 在 xaml 中为绑定 RelayCommand 设置 DataContext

在下面的 xaml 代码中,我正在尝试绑定ResourceButtonClick视图模型中的 RelayCommand 。除此之外,我想将Resource.Id作为参数传递给这个命令。

但是,ResourceButtonClick不叫。我怀疑通过设置ItemsSourceto Resources,我覆盖了数据上下文,即视图模型。

这是RelayCommand视图模型中的。

视图模型的构造函数:

视图模型中的方法:

我有两个问题:首先,我该如何调用ResourceButtonClick命令。其次,如何将Resource.Id参数作为参数传递给该命令。

任何建议将不胜感激。

0 投票
2 回答
403 浏览

mvvm - ICommand 是否总是需要一个对象作为参数?

当我实现ICommand接口时,会创建以下方法

有趣的部分是

仅仅是因为它表明它需要 1 个参数。如果我不需要传递参数怎么办?在我的 ViewModel 我有以下代码

OpenDialog方法不需要参数,但似乎我必须这样做才能满足接口。

我这样做是对的还是我错过了重点?

0 投票
2 回答
598 浏览

c# - 从服务类的视图模型中执行中继命令

我构建了一个自定义 TreeView 类,为每个节点设置了“名称/背景”等。我还有一个可以设置的 ICommand 属性,以便每个节点可以在必要时执行自定义方法。

我在“树视图服务类”中构建所有这些,然后通过 MVVMLight Messenger 将菜单发送到用户控件。这一切都很好,但我的问题是,如果我没有为节点指定自定义命令,我希望它执行“默认操作”,该操作应该位于从 Messenger 服务接收消息的视图模型中。

基本上我的问题是:如何在 MainViewModel 中公开 RelayCommand ,以便在构建树时可以从另一个视图模型(或我的服务类)引用它。