2013-12-19 34 views
0

我建立一個基於MVVM並使用Autofac作爲依賴注入一個小應用程序更新。沒有得到按鈕使用MVVM和Autofac在Windows Phone 8的

我已經創建了所有的ViewModels取決於從VMBase和我還使用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>(); } 
    } 
} 

明白了處理CanExecute的提出了一個DelegateCommand類:

public void RaiseCanExecuteChanged() 
    { 
     if (this.CanExecuteChanged != null) 
      this.CanExecuteChanged(null, new EventArgs()); 
    } 

我的問題是當我嘗試使用,改變使用CanExecute方法,它返回一個變量的狀態DelegateCommand類把一個按鈕,當我按另一個按鈕時會改變。 改變變量的值似乎並沒有啓動可變更CanExecute結果的任何事件(CanExecute方法不甚至稱),我很迷失。

public ICommand NavigateCommand 
    { 
     get { return navigateCommand; } 
    } 

    public void NavigateCommandExecute() 
    { 

    } 

    public bool NavigateCommandCanExecute() 
    { 
     return canCallWS; 
    } 

運行不依賴注入一個類似的應用程序(Autofac)之前已經爲我工作。

任何幫助?

感謝

回答

1

在你有CanExecuteChanged事件,你做的RaisePropertyChanged方法來啓動的PropertyChanged在你的視圖模型基地以同樣的方式DelegateCommand類,你需要做一個RaiseCanExecuteChanged方法在DelegateCommand類啓動當您更改條件CanExecuteChanged事件......

在WPF我們有一個命令管理誰使這項工作對我們無需啓動事件。在Windows Phone中,我們需要啓動該事件。這不是一個autofac或DI問題,是命令可以在Silverlight/Windows Phone中執行的方式。

希望這有助於!

+0

感謝若蘇埃!一個人的快樂,你一直在回答;-) –

+0

我已經有了這種方法...,在描述中更新 –

+1

嗨!太好了,現在你更新了canCallWS變量/屬性,調用你想更新CanExecute狀態的DelegateCommand的RaiseCanExecuteChanged,並且瞧!它只是需要工作.... –

相關問題