我正在使用SIlverLight RelayCommand来启用和禁用按钮。 基于某些条件,我想禁用一个按钮, 请建议我如何禁用按钮
以下工作正常,初始加载
public RelayCommand BackClickCommand
{
get
{
if (_backClickCommand == null)
{
_backClickCommand = new RelayCommand(() =>
{
step--;
if(step<1)
// code need to diable this button
}, () => this.CanExecute());
}
return _backClickCommand;
}
}
int step=2;
public bool CanExecute()
{
if(step>0)
return enabled;
else false;
}
我的代码中的某些地方
enabled = false;
请建议我如何禁用我的按钮
谢谢,
答案 0 :(得分:2)
假设你像这样绑定你的Xaml:
<Button Command="{Binding BackClickCommand}" />
您需要做的就是提醒用户界面再次检查绑定:
enabled = false;
PropertyChanged(this, new PropertyChangedEventArgs("BackClickCommand"));
这将使UI再次检查BackClickCommand
并看到它已更改,从而禁用该按钮。
有关完整的代码示例,请参阅MSDN。
编辑:这可能是一段代码:
int step = 2;
public RelayCommand BackClickCommand
{
get
{
if (_backClickCommand == null)
{
_backClickCommand = new RelayCommand(() =>
{
step--;
PropertyChanged(this, new PropertyChangedEventArgs("BackClickCommand"));
}, () => this.CanExecute());
}
return _backClickCommand;
}
}
public bool CanExecute()
{
return this.step > 0;
}
答案 1 :(得分:0)
每当步长值发生变化时,您必须通知命令已更改,以便再次评估CanExecute。
正如你所说,启用将在代码中的某处进行评估。
您的代码可能更不相同:
int step=2;
public RelayCommand BackClickCommand
{
get
{
if (_backClickCommand == null)
{
_backClickCommand = new RelayCommand(() =>
{
step--; // Your logic
OnPropertyChanged("BackClickCommand"); // Notify the change!
}, () => this.CanExecute());
}
return _backClickCommand;
}
}
public bool CanExecute()
{
return enabled;
}