title: 'System.Reflection.TargetInvocationException' (Inside MVVM Light)
body: <p>I used MVVM Light toolkit and when i load the ViewModel Instance in the ViewModelLocator i get the exception An exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.ni.dll but was not handled in user code . I Searched a lot  but couldn't find the solution yet</p>
  
  <p>My ViewModelLocator Code:</p>
  
  <pre><code>    /*
    In App.xaml:
    &lt;Application.Resources&gt;
        &lt;vm:ViewModelLocator xmlns:vm="clr-namespace:ToDoList"
                             x:Key="Locator" /&gt;
    &lt;/Application.Resources&gt;
  
    In the View:
    DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
  
    You can also use Blend to do all this with the tool's support.
    See http://www.galasoft.ch/mvvm
  */
  
  using Cimbalino.Phone.Toolkit.Services;
  using GalaSoft.MvvmLight;
  using GalaSoft.MvvmLight.Ioc;
  using GalaSoft.MvvmLight.Messaging;
  using Microsoft.Practices.ServiceLocation;
  using System.Windows;
  
  namespace ToDoList.ViewModel
  {
      /// &lt;summary&gt;
      /// This class contains static references to all the view models in the
      /// application and provides an entry point for the bindings.
      /// &lt;/summary&gt;
      public class ViewModelLocator
      {
          /// &lt;summary&gt;
          /// Initializes a new instance of the ViewModelLocator class.
          /// &lt;/summary&gt;
          public ViewModelLocator()
          {
              ServiceLocator.SetLocatorProvider(() =&gt; SimpleIoc.Default);
  
              ////if (ViewModelBase.IsInDesignModeStatic)
              ////{
              ////    // Create design time view services and models
              ////    SimpleIoc.Default.Register&lt;IDataService, DesignDataService&gt;();
              ////}
              ////else
              ////{
              ////    // Create run time view services and models
              ////    SimpleIoc.Default.Register&lt;IDataService, DataService&gt;();
              ////}
  
              if (!SimpleIoc.Default.IsRegistered&lt;IMarketplaceReviewService&gt;())
              {
                  SimpleIoc.Default.Register&lt;IMarketplaceReviewService, MarketplaceReviewService&gt;();
              }
  
              SimpleIoc.Default.Register&lt;ToDoViewModel&gt;();
          }
  
          public ToDoViewModel ToDo
          {
              get
              {
                  return ServiceLocator.Current.GetInstance&lt;ToDoViewModel&gt;();
              }
          }
  
  
          public static void Cleanup()
          {
              // TODO Clear the ViewModels
              var viewModelLocator = (ViewModelLocator)Application.Current.Resources["Locator"];
              viewModelLocator.ToDo.Cleanup();
  
              Messenger.Reset();
          }
      }
  }
  </code></pre>
  
  <p>My ToDoViewModel :</p>
  
  <pre><code>using Cimbalino.Phone.Toolkit.Services;
  using GalaSoft.MvvmLight;
  using GalaSoft.MvvmLight.Command;
  using System;
  using System.Collections.Generic;
  using System.Collections.ObjectModel;
  using System.ComponentModel;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  using System.Windows.Input;
  using ToDoList.Models;
  
  namespace ToDoList.ViewModel
  {
     public class ToDoViewModel : ViewModelBase
      {
  
         private readonly IMarketplaceReviewService _marketplaceReviewService;
         public ICommand DeleteCommand { get; private set; }
         public ICommand AddCommand { get;  set; }
         public ICommand RateCommand { get; private set; }
         public string Text { get;  set; }
  
          // LINQ to SQL data context for the local database.
          private ToDoDataContext toDoDB;
  
          // Class constructor, create the data context object.
          public ToDoViewModel(string toDoDBConnectionString, IMarketplaceReviewService marketplaceReviewService)
          {
  
  
              _marketplaceReviewService = marketplaceReviewService;
              toDoDB = new ToDoDataContext(toDoDBConnectionString);
              DeleteCommand = new RelayCommand&lt;ToDoItem&gt;(DeleteToDoItem);
              AddCommand = new RelayCommand(Add);
              LoadCollectionsFromDatabase();
              RateCommand = new RelayCommand(Rate);
  
          }
  
          private void Rate()
          {
              _marketplaceReviewService.Show();
          }
          private void Delete(ToDoItem newToDoItem)
          {
              //ToDoItem newToDoItem = obj as ToDoItem;
  
              DeleteToDoItem(newToDoItem);
          }
  
          private void Add()
          {
            ToDoItem newToDoItem = new ToDoItem
            {
                ItemName = this.Text,
  
            };
            AddToDoItem(newToDoItem);
          }
  
          //
          // TODO: Add collections, list, and methods here.
          //
  
          // Write changes in the data context to the database.
          public void SaveChangesToDB()
          {
              toDoDB.SubmitChanges();
          }
  
  
          // All to-do items.
          private ObservableCollection&lt;ToDoItem&gt; _allToDoItems;
          public ObservableCollection&lt;ToDoItem&gt; AllToDoItems
          {
              get { return _allToDoItems; }
              set
              {
                  _allToDoItems = value;
                  NotifyPropertyChanged("AllToDoItems");
              }
          }
  
  
  
  
          public void LoadCollectionsFromDatabase()
          {
  
              // Specify the query for all to-do items in the database.
              var toDoItemsInDB = from ToDoItem todo in toDoDB.Items
                                  select todo;
  
              // Query the database and load all to-do items.
              AllToDoItems = new ObservableCollection&lt;ToDoItem&gt;(toDoItemsInDB);
  
              // Specify the query for all categories in the database.
  
  
  
  
  
  
          }
          // Add a to-do item to the database and collections.
          public void AddToDoItem(ToDoItem newToDoItem)
          {
              // Add a to-do item to the data context.
              toDoDB.Items.InsertOnSubmit(newToDoItem);
  
              // Save changes to the database.
              toDoDB.SubmitChanges();
  
              // Add a to-do item to the "all" observable collection.
              AllToDoItems.Add(newToDoItem);
  
  
          }
          // Remove a to-do task item from the database and collections.
          public void DeleteToDoItem(ToDoItem toDoForDelete)
          {
  
              // Remove the to-do item from the "all" observable collection.
              AllToDoItems.Remove(toDoForDelete);
  
              // Remove the to-do item from the data context.
              toDoDB.Items.DeleteOnSubmit(toDoForDelete);
  
  
  
              // Save changes to the database.
              toDoDB.SubmitChanges();
          }
          #region INotifyPropertyChanged Members
  
          public event PropertyChangedEventHandler PropertyChanged;
  
          // Used to notify the app that a property has changed.
          private void NotifyPropertyChanged(string propertyName)
          {
              if (PropertyChanged != null)
              {
                  PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
              }
          }
          #endregion
  
      }
  }
  </code></pre>
  
  <p>The exception occurs at the <img src="https://i.stack.imgur.com/eLk2a.jpg" alt="enter image description here"></p>
  
  <p><img src="https://i.stack.imgur.com/eOldm.jpg" alt="enter image description here"></p>