2013-03-22 18 views
0

當我使用在定義一箇中繼命令處理程序的拉姆達語句數據業務的注入情況下,處理器則永遠不會調用(它與按鈕關聯)。當我在lambda中聲明數據服務的一個實例時,它工作正常。有任何想法嗎?繼電器命令使用注入數據服務不會調用

編輯: 創建的類變量_dataService並在視圖模型構造器初始化它。使用繼電器命令處理程序中的類變量以及所有工作。

private IDataService _dataService; 
    public MainViewModel(IDataService dataService) 
    { 
     _dataService = dataService; 
     Batches = new ObservableCollection<Batch>(); 

     #region RefreshCommand 
     RefreshCommand = new RelayCommand(
      () => 
      { 
       var t1 = Task<ObservableCollection<Batch>>.Factory.StartNew(() => 
       { 
        // WHEN I UNCOMMENT AND COMMENT OUT BELOW, WORKS FINE. 
        //DataService test = new DataService(); 
        //ObservableCollection<Batch> batches = test.GetBatchesToProcess(); 

        // 
        // THIS NOW WORKS. 
        return _dataService.GetBatchesToProcess(); 
       }); 
       try 
       { 
        t1.Wait(); 
       } 
       catch (AggregateException ae) 
       { 
        foreach (var e in ae.InnerExceptions) 
        { 
         if (e is SqlException) 
         { 
          MessageBox.Show("Sql Exception: " + e.Message); 
         } 
         else 
         { 
          MessageBox.Show("Unexpected error: " + e.Message); 
         } 
        } 
        return; 
       } 
       Batches = t1.Result; 
      } 
     ); 
     #endregion 
    } 
+0

你怎麼知道是不是被調用呢? – 2013-03-22 15:44:14

+0

有斷點。工作版本在t1.Wait()上創建了一個斷點。非工作版本沒有。 – 2013-03-22 18:52:43

+0

如果你找到了解決辦法,你應該張貼溶液作爲答案,獨自離開了一個問題,未來用戶將不會意識到發生了什麼問題是還是什麼解決辦法是。 – 2013-03-22 21:18:37

回答

0

在中繼命令處理程序中,對MainViewModel構造函數使用dataService參數不起作用。使用內部構造解決了困境被初始化的私有類變量(_dataService)。