Использую Prism. Во VM описываю свойство
private Employee _dgSelectedItem;
public Employee DgSelectedItem
{
get => _dgSelectedItem;
set
{
_dgSelectedItem = value;
RaisePropertyChanged(nameof(DgSelectedItem));
}
}
Объявляю команду:
public DelegateCommand OpenCommand { get; }
и соответственно ее описание в конструкторе
OpenCommand = new DelegateCommand(() =>
{
//какое-то действие
}, () => DgSelectedItem != null);
Собственно вопрос про булевское условие команды. DgSelectedItem меняется при клике на какую либо строку datagrid, но кнопка остается неактивной. Подскажите, что я делю не так?
Вам при обновлении DgSelectedItem надо вызывать DelegateCommand.RaiseCanExecuteChanged():
public Employee DgSelectedItem
{
get => _dgSelectedItem;
set
{
_dgSelectedItem = value;
RaisePropertyChanged(nameof(DgSelectedItem));
OpenCommand.RaiseCanExecuteChanged();
}
}
т. к. команда сама по себе никак не может догадаться, что изменились условия запуска.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей