В основном у меня есть привязка команды для самой команды, назначенной Window.CommandBindings:
<CommandBinding Command="local:TimerViewModel.AddTimer"
CanExecute="local:TimerViewModel.AddTimer_CanExecute"
Executed="local:TimerViewModel.AddTimer_Executed" />
local - это пространство имен, сгенерированное по умолчанию и указывающее на пространство имен приложения. Здесь я пытаюсь добиться обработки команд внутри TimerViewModel, но постоянно получаю следующую ошибку:
CanExecute = "local: TimerViewModel.AddTimer_CanExecute" недопустим. 'local: TimerViewModel.AddTimer_CanExecute' не является допустимым именем метода обработчика событий. Допустимы только методы экземпляра в сгенерированном классе или классе с выделенным кодом.
TimerViewModel довольно прост, но я думаю, что что-то упустил:
public class TimerViewModel : ViewModelBase
{
public TimerViewModel()
{
_timers = new ObservableCollection<TimerModel>();
_addTimer = new RoutedUICommand("Add Timer", "AddTimer", GetType());
}
private ObservableCollection<TimerModel> _timers;
public ObservableCollection<TimerModel> Timers
{
get { return _timers; }
}
private static RoutedUICommand _addTimer;
public static RoutedUICommand AddTimer
{
get { return _addTimer; }
}
public void AddTimer_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
public void AddTimer_Executed(object sender, ExecutedRoutedEventArgs e)
{
_timers.Add(new TimerModel(TimeSpan.FromSeconds((new Random()).Next())));
}
}
Кто-нибудь может указать на ошибки, которые я совершаю?