Я создаю небольшое приложение, основанное на MVVM и использующее Autofac в качестве инжектора зависимостей.
Я создал VMBase, от которого зависят все ViewModels, и я также использую VMLocator для внедрения всех зависимостей (используя Autofac, как указано выше).
public class VMLocator
{
IContainer container;
public VMLocator()
{
var builder = new ContainerBuilder();
builder.RegisterType<VMRetrieveInfo>();
container = builder.Build();
}
public VMRetrieveInfo RetrieveInfoViewModel
{
get { return container.Resolve<VMRetrieveInfo>(); }
}
}
Получил класс DelegateCommand, который обрабатывает Raises CanExecute:
public void RaiseCanExecuteChanged()
{
if (this.CanExecuteChanged != null)
this.CanExecuteChanged(null, new EventArgs());
}
Моя проблема возникает, когда я пытаюсь поместить кнопку с помощью класса DelegateCommand, который меняет свое состояние с помощью метода CanExecute, который возвращает переменную, которая изменяется, когда я нажимаю другую кнопку. Изменение значения переменной, похоже, не запускает какое-либо событие, которое изменяет результат CanExecute (метод CanExecute даже не вызывается), и я довольно растерялся.
public ICommand NavigateCommand
{
get { return navigateCommand; }
}
public void NavigateCommandExecute()
{
}
public bool NavigateCommandCanExecute()
{
return canCallWS;
}
Запуск аналогичного приложения без внедрения зависимостей (Autofac) работал у меня раньше.
Любая помощь?
Спасибо