CanExecute не срабатывает при изменении параметра
Тестирую команды wpf. Имеется следующая модель представления с командой AddClient:
public class WindowMainVM :VM
{
public WindowMainVM(List<Participant> participants)
{
Clients = new ObservableCollection<Participant>(participants);
AddClient = new CmdAddClient(selectedClient);
}
public ObservableCollection<Participant> Clients { get; set; }
private Participant selectedClient;
public Participant SelectedClient
{
get { return selectedClient; }
set { selectedClient = value; OnPropertyChanged("SelectedClient"); }
}
//...
public CmdAddClient AddClient { get; private set; }
}
И имеется класс - реализация интерфейса ICommand CmdAddClient в конструктор которой передается свойство модели selectedClient. Суть в том, что CanExecute должен возвращать true если свойство модели представления selectedClient не равно null.
public class CmdAddClient : ICommand
{
public CmdAddClient (object obj)
{
clientObject = obj;
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
private object clientObject { get; set; }
public bool CanExecute(object parameter)
{
if (clientObject != null)
return true;
return false;
}
public void Execute(object parameter)
{
Console.WriteLine("Hello World!");
}
}
Проблема в том, что хотя свойству модели представления успешно присваивается значение, приватное свойство clientObj в классе команды остается равным null и соответственно CanExecute никогда не возвращает true.