问题标签 [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.
mvvm - 在哪里调用 RaiseCanExecuteChanged?
我正在使用 MVVM Light Toolkit,我想创建一个RelayCommand
.
如果我的 ViewModel 有一些String
属性,这些属性RaiseCanExecuteChanged
在设置器中调用,一切正常,命令可以在我想要的时候执行。
但是如果我更改代码,我创建了一个模型类 X,它包含所有这些属性,ViewModel 包含一个类型为 X 的属性,我应该在哪里调用RaiseCanExecuteChanged
?在Model类中没有意义,ViewModel中X的setter没有被调用。
wpf - RelayCommand commandParameter 为空
我的用户控件上有一个按钮
SaveCommand 是在 ViewModel 中声明的 RelayCommand。CompanyDetails 是同一 ViewModel 中的一个属性。上面提到的ViewModel就是我的UserControl的datacontext。
用户控件上的其他字段绑定到调用 GetCompanyDetails 函数的 ObjectDataProvider。每次调用此函数时都会正确设置 CompanyDetails,直到我调用 SaveIt 子例程。调用 SaveIt 时,它的参数始终为 Nothing。我在哪里犯错?非常感谢您的回答。
c# - usercontrol button binding not responding to relaycommand on mainviewmodel
I have a MainWindow bound to its mainViewModel. inside the MainWindow I have a usercontrol defind like this
inside that usercontrol I have a datagrid with buttons. The goal is when the buttons are clicked to change a datagrid on the MainWindow xaml. this is what my usercontrol datagrid looks like
when I run the application I get the following error.
I am using a command relay that is located in the MainViewModel. My problem is I dont know how to reference that mainViewModel, i have tried several of the suggested solutions like the following
Please any suggestions will be helpful. Thank you.
.net - 使用 IMultiValueConverter 将多个 CommandParameters 传递给 viewModel
我有以下代码:
下面是 PassThroughConverter 的代码:
当我一碰到返回值行进行调试时,正确的值在数组中,但是当我按下触发 filtergrid 命令的按钮时,返回的值都是空的?任何人都可以帮忙。谢谢你。
silverlight - 将 BindableApplicationBarIconButton IsEnabled 属性绑定到 Relaycommand CanExecute Windows Phone 7.1
我正在使用 Phone7.Fx R1
以下作品。当用户按下按钮时,系统不会做出反应。这意味着,如果在没有开始游戏的情况下按下停止游戏,则没有反应,反之亦然。
但是该按钮看起来是活动的。我知道我可以将 IsEnabled 绑定到不同的属性,但我希望它绑定到 NewGameCanExecute 和 StopGameCanExecute。这可能吗?
一些 XAML 代码:
中继命令:
几个问题和答案:
问:您是否尝试在 CanExecute 函数中设置断点以查看它是否被调用?
答:是的。它确实被调用了,但即使返回 false,图标也不会变灰。如果 CanExecute 方法返回 false,则不执行 Execute 方法。但我希望图标像普通按钮一样变灰。
解决方案
我花了一些时间想出了一个解决方案,可以在这里找到:http: //pastebin.com/MM75xACj
windows-phone-7 - 在 ItemsControl Tap 事件上绑定 CommandParameter
我正在使用 ItemsControl,并且我想确定在 Tap 命令上选择了哪个项目。我的 xaml 在这里定义:
这是我的视图模型:
命令的事件有效,但是当我到达 ItemSelected 方法时,myItem 要么为 Null,要么我得到一个异常转换它(取决于我在 xaml 中定义 CommandParameter 的方式)。
如果我使用 ListBox 并设置,我可以做到这一点CommandParameter="{Binding SelectedItem, ElementName=MyItemsList"}
关于如何使用 ItemsControl 执行此操作的任何想法?还是性能差异在 Mango 中两者之间没有太大区别?
wpf - 将参数传递给 Execute 和 CanExecute relaycommand WPF MVVM Light
我正在尝试使用来自 MVVMLight 的 Relay 命令,并且我正在努力寻找正确的语法来将参数传递给 Execute 方法和 CanExecute 方法。
以下是我失败的尝试
任何帮助或方向将不胜感激
c# - 如何控制继电器命令执行?
我有一个这样的按钮:
我希望当保存命令执行到未完成时,用户无法单击我的按钮,或者如果单击我的按钮,我的命令不会执行!我对这个问题的解决方案是
这个问题有更好的解决方案吗?
c# - 如何从带有参数的 lambda 表达式创建委托?
我正在尝试使用动态参数创建 RelayCommand 的实例:
我有一个具有多种方法的 ViewModel,现在我只列出:
我想将它们动态连接到 RelayCommand 的实例,如下所示:
上一行有效,但是,我的方法名称是在运行时传入的,所以我需要动态地实现相同的目标。
编辑:只是一些澄清:在我的场景中,我不能直接按名称引用我的方法。我将用于创建 RelayCommand 的方法名称将作为字符串传递。
解决方案:
这是我使用@ZafarYousafi 建议的最终解决方案。请注意我如何为 RelayCommand 以及 Action 和 Predicate 使用通用的“对象”类型,因为这是我的方法参数(对象 myparameter)的类型:
这应该相当于:
重要提示:正如@DanC 所指出的,由 Josh Smith 创建的 RelayCommand 类不打算在创建时接收参数。在架构良好的 MVVM 解决方案中,RelayCommand 参数将通过 CommandParameter 属性的 XAML 绑定传递。因此,如果您将 button.Command 绑定到 RelayCommand,您还需要绑定 button.CommandParameter,如下所述:MVVM RelayCommand with parameters
旧不成功的尝试: 这是我到目前为止所拥有的:
运行良好,没有编译或运行时错误,但是我不知道如何通过 RelayComand 构造函数参数传递我的参数。
任何建议将不胜感激,
谢谢
与我之前的问题有关
c# - 用 MVVM 实现“关闭窗口”命令
所以我的第一次尝试是从后面的代码中完成所有事情,现在我正在尝试重构我的代码以使用 MVVM 模式,遵循盒子信息中 MVVM 的指导。
我已经创建了一个视图模型类来匹配我的视图类,并且我正在将代码从后面的代码中移到从命令开始的视图模型中。
我的第一个障碍是尝试实现一个“关闭”按钮,如果数据没有被修改,它会关闭窗口。我已经安装了一个 CloseCommand 来替换 'onClick' 方法,除了代码尝试运行的位置之外,一切都很好this.Close()
。显然,由于代码已从窗口移至普通类,“this”不是窗口,因此不可关闭。但是,根据 MVVM,viewmodel 不知道视图,所以我不能调用view.Close()
.
有人可以建议我如何从 viewmodel 命令关闭窗口吗?