【发布时间】:2015-02-06 16:12:55
【问题描述】:
我的视图上有一个带有简单命令绑定的按钮:
<Window ...>
<Window.DataContext>
<vm:ShellViewModel />
</Window.DataContext>
...
<Button Command="{Binding DoSomethingCoolCommand}" Content="Execute" />
还有虚拟机:
public class ShellViewModel : ObservableObject {
private RelayCommand _doSomethingCoolCommand;
public ICommand DoSomethingCoolCommand {
get {
return _doSomethingCoolCommand ??
(_doSomethingCoolCommand = new RelayCommand(DoSomethingCool));
}
}
private void DoSomethingCool() { ... }
但是,该按钮在应用程序/视图启动时被禁用,我无法启用它。我尝试将命令执行评估传递给RelayCommand,并在视图上设置IsEnabled。我错过了什么吗?
编辑
RelayCommand 和 ObservableObject 来自 mvvm Foundation 项目,如标签中所述。链接:https://mvvmfoundation.codeplex.com
【问题讨论】:
-
您在这里使用的是什么 RelayCommand 版本?这是你自己的自定义类吗?
-
@RohitVats 不,它来自 MVVM 基础项目。见:mvvmfoundation.codeplex.com/SourceControl/latest#MvvmFoundation/…
-
唯一的原因是
CanExecute委托为 DoSomethingCoolCommand 返回 false 但您没有提供该委托。所以,它应该永远是真的。这是完整的代码吗?您是否有 CanExecute 委托或者您是否为应用程序中的按钮定义了一些默认模板? -
是否启用了父级?
-
如果是小的,pastebin 会很好 或者一些到 Dropbox 的链接,gitHub 也很好。
标签: c# wpf mvvm binding mvvm-foundation