Я перевожу инструмент из MVVM Light 4.0.3 в 5.4.1 и обнаружил очень странную проблему с новейшей реализацией RelayCommand .
Это старая реализация в V4.0.3 :
![img1](https://i.stack.imgur.com/IsQXM.png)
![img2](https://i.stack.imgur.com/LToN9.png)
Это новейшая реализация в V5.4.1 :
![img4](https://i.stack.imgur.com/DP1B1.png)
![img3](https://i.stack.imgur.com/Af1qB.png)
Прежде чем я смог использовать переменные для определения поведения canExecute (включил кнопку) со следующим кодом:
public ICommand GetNewItemsFromDB { get; private set; }
private bool _IsActive;
public bool IsActive
{
get
{
return _IsActive;
}
set
{
if (_IsActive != value)
{
_IsActive = value;
this.RaisePropertyChanged(() => IsActive);
}
}
}
GetNewItemsFromDB = new RelayCommand(GetDataFromDB, () => { return IsActive == false; });
private void GetDataFromDB()
{
IsActive = true;
}
Предыдущий код мог без проблем включить кнопку в MVVM Light 4.0.3; однако в новейшей реализации всегда отключено, я добавил немного измененный, поскольку есть новое определение keepTargetAlive :
GetNewItemsFromDB = new RelayCommand(GetDataFromDB, () => { return IsActive == false; }, true);
Кроме того, я попробовал вариант false , но ничего не изменилось. Единственный способ, который я нашел, чтобы снова включить его, это установить предварительно определенное значение, например:
GetNewItemsFromDB = new RelayCommand(GetDataFromDB, () => true, true);
Эта реализация будет бесполезной в моем случае, поскольку RelayCommand зависит от переменной IsActive , которая определяет, включена она или нет. Кто-нибудь, что я должен изменить в V5 , чтобы он работал? Спасибо за ваши предложения.