C# 正确使用针对MVVM灯光图标命令的CanExecute
我开始学习C语言中的MVVM,我想知道如何在MVVM语言中正确使用ICommand的CanExecute方法。我的WPF应用程序在VS 2012 C#4.5框架中 如何正确实施CanExecute 我刚刚回到了现实,但我知道有一个适当的方法来处理它。也许吧C# 正确使用针对MVVM灯光图标命令的CanExecute,c#,wpf,mvvm,C#,Wpf,Mvvm,我开始学习C语言中的MVVM,我想知道如何在MVVM语言中正确使用ICommand的CanExecute方法。我的WPF应用程序在VS 2012 C#4.5框架中 如何正确实施CanExecute 我刚刚回到了现实,但我知道有一个适当的方法来处理它。也许吧 if(parameter != null) { return true; } 下面是一些示例代码 private RelayCommand sendCommand; public ICommand SendComman
if(parameter != null)
{
return true;
}
下面是一些示例代码
private RelayCommand sendCommand;
public ICommand SendCommand
{
get
{
if (sendCommand == null)
sendCommand = new RelayCommand(p => SendStuffMethod(p), p => CanSendStuff(p));
return sendCommand;
}
}
private bool CanSendStuff(object parameter)
{
return true;
}
private void SendStuffMethod(object parameter)
{
string[] samples = (string[])parameter;
foreach(var sample in samples)
{
//Execute Stuff
}
}
声明命令
public ICommand SaveCommand { get; set; }
在构造函数中:
public SelectedOrderViewModel()
{
SaveCommand = new RelayCommand(ExecuteSaveCommand, CanExecuteSaveCommand);
}
方法:
private bool CanExecuteSaveCommand()
{
return SelectedOrder.ContactName != null;
}
private void ExecuteSaveCommand()
{
Save();
}
POLS:Getter应该返回
null
如果未设置命令,则Getter的任务不是分配任何内容。。。也就是说,我在viewmodel中创建了一个candomething(object cmdState)
方法,并将该方法分配给命令的CanExecute
操作……这基本上就是您正在做的事情。只需使用viewmodel的属性来确定返回值:)我不确定是否理解您的问题。“如何为RelayCommand
正确实施CanExecute()
?”。这当然取决于您的用例。如果希望允许绑定到该函数的视图能够执行该函数,请使函数returntrue
,否则将返回false
。使用您需要的任何逻辑,使该方法返回bool
,以指示绑定的RelayCommand
是否可用。如果您有一个总是返回true的命令,您可以在创建时忽略RelayCommand
的构造函数的第二个参数。类似于newrelaycommand(ExecuteCommand)代码>可以吗
private bool CanExecuteSaveCommand()
{
return SelectedOrder.ContactName != null;
}
private void ExecuteSaveCommand()
{
Save();
}