Во-первых, создайте свойство bool, чтобы вы знали, что когда вы нажали первую кнопку, давайте назовем ее IsFirstButtonClicked.
В вашей команде Print вы должны добавить CommandCanExecute, например:
private bool SecondCommandCanExecute(object unused)
{
return this.IsFirstButtonClicked;
}
когда вы нажимаете первую кнопку, вы устанавливаете IsFirstButtonClicked (свойство bool) в значение true и повышаете значение PrintCommandCanExecute.
Я полагаю, у вас есть ICommand FirstCommand.Вы должны создать класс, подобный этому:
public class RelayCommand : ICommand
{
private Action<object> _action;
private Func<bool> _func;
public RelayCommand(Action<object> action,Func<bool> func)
{
_action = action;
_func = func;
}
public void RaiseCanExecuteChanged()
{
if(CanExecuteChanged!=null)
CanExecuteChanged(this,new EventArgs());
}
#region ICommand Members
public bool CanExecute(object parameter)
{
if (_func != null)
return _func();
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
_action(parameter);
}
#endregion
}
Теперь ваша SecondCommand должна быть RelayCommand, например, так:
RelayCommand SecondCommand = new RelayCommand(yourCommandExecute, this.SecondCommandCanExecute)
Теперь, когда вы щелкаете по FirstButton, установите IsFirstButtonClicked в true и затем вызовитеSecondCommand.RaiseCanExecuteChanged ();
Дайте мне знать, помогло ли это вам.