Прежде чем дать вам ответ, я бы хотел отметить несколько вещей. Как правило, суффикс вашей команды: Command: EnabledButtonCommand. Я вижу, что ваша команда asyn c, пока вы ничего не ждете. Это плохо.
Почему вы хотите установить IsButtonEnabled в коде, а не в методе, выполняемом командой (во ViewModel)?
Где вы устанавливаете DataContext? Используете ли вы Prism или что-то еще, чтобы связать ViewModel с DataContext вашей страницы? Если вы этого не сделаете, вам нужно сделать следующее:
public class MyPage()
{
private MyViewModel _viewModel = new MyViewModel();
public MyPage()
{
InitializeComponent();
DataContext = _viewModel;
}
public void OnDisabledButtonClicked(object sender, EventArgs e)
{
_viewModel.IsButtonEnabled = false;
}
}
Если ваша ViewModel была установлена в Xaml или в другом месте (во время навигации с помощью Prism и т. Д. c)
public class MyPage()
{
private MyViewModel _viewModel;
public MyPage()
{
InitializeComponent();
_viewModel = DataContext as MyViewModel;
}
public void OnDisabledButtonClicked(object sender, EventArgs e)
{
_myViewModel.IsButtonEnabled = false;
}
}
Последнее слово: если кнопка не активирована, событие команды / щелчка не будет доступно пользователю до тех пор, пока кнопка снова не будет активирована.
Это можно проверить с помощью кнопки, команда которой связана с заданная команда и другая кнопка с привязкой IsEnabled к вашему логическому значению.
Приведенный мною код может привести к ошибкам при ответе в браузере без использования EDI.