Условие выполнения команды WPF MVVM

172
24 августа 2019, 02:10

Использую 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, но кнопка остается неактивной. Подскажите, что я делю не так?

Answer 1

Вам при обновлении DgSelectedItem надо вызывать DelegateCommand.RaiseCanExecuteChanged():

public Employee DgSelectedItem
{
    get => _dgSelectedItem;
    set
    {
        _dgSelectedItem = value;
        RaisePropertyChanged(nameof(DgSelectedItem));
        OpenCommand.RaiseCanExecuteChanged();
    }
}

т. к. команда сама по себе никак не может догадаться, что изменились условия запуска.

READ ALSO
Нужно спрятать спрайт за UI в unity

Нужно спрятать спрайт за UI в unity

Нужно спрятать ракету под UI Image и кнопками, но когда я перетаскиваю его вниз, то спрайт лежит поверх UIЧто сделать для этого?

133
C# IndexOf метод [закрыт]

C# IndexOf метод [закрыт]

Как сделать, что бы метод IndexOf проверял строку до конца, а не до первого совпадения?

117
Не удается получить login и pass из запроса

Не удается получить login и pass из запроса

Есть метод Api-контроллера:

139
Поиск окружности с помощью Emgu cv C#

Поиск окружности с помощью Emgu cv C#

не могли бы вы мне помочьЯ отфильтровал изображение, и вот результат

131