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.


Ответы (0 шт):