2013-03-22 19 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)。