将MVVM-Light RelayCommand <t>关联到按钮时,添加CommandParameter可以执行CanExecute

时间:2018-02-22 15:34:15

标签: wpf mvvm-light relaycommand

我不确定这是一个MVVM-Light错误还是只是在WPF中不起作用的东西....我有一个按钮,我将Command属性设置为RelayCommand。只要我没有设置CommandParameter属性,一切正常。一旦我这样做,CanExecute回调就会停止工作。

我正在使用GalaSoft.MvvmLight.CommandWpf命名空间,因为我在.Net 4.5.2中工作。这是一个代码snippit:

false

CanSetFlag方法被调用一次,但之后再也没有。如果我没有设置CommandParameter属性,它将按预期工作。有什么想法发生了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您不应将Binding属性设置为BindingOperations.SetBinding。请使用Button button = new Button() { Command = SetFlagCommand }; BindingOperations.SetBinding(button, Button.CommandParameterProperty, new Binding("SelectedItems") { ElementName = "lstAllChoices" }); mButtons.Add(btn); 方法绑定它:

SelectedItems

还要确保源属性(T)的类型与RelayCommand<T>的类型参数function resetScore() { console.log("q " + q + " score " + score); localStorage.setItem("q", 1); localStorage.setItem("score", 0); console.log("q " + q + " score " + score); window.localStorage.clear(); console.log("q " + q + " score " + score); setTimeout(function () { window.location.href = "quiz.xhtml"; }, 300); 匹配。