Създавам малко приложение, което е базирано на 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, който обработва повдигания на 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) ми работеше и преди.
Някаква помощ?
Благодаря