/// <summary>
        /// Handles OnSyncPairAddedToRepository Event
        /// </summary>
        /// <param name="sender">Sending Object</param>
        /// <param name="e">Event Arguments</param>
        void OnSyncPairAddedToRepository(object sender, SyncPairAddedEventArgs e)
        {
            // Create new sync pair view model with supplied args.
            var viewModel = new SyncPairViewModel(e.NewSyncPair, _syncPairRepository, _wsCommands);

            // Add view model to observable collection.
            AllSyncPairs.Add(viewModel);
        }
 /// <summary>
 /// Handles OnSyncPairRemovedToRepository Event
 /// </summary>
 /// <param name="sender">Sending Object</param>
 /// <param name="e">Event Arguments</param>
 void OnSyncPairRemovedFromRepository(object sender, SyncPairRemovedEventArgs e)
 {
     // Find sync pair view model by matching description.
     foreach (var syncPairViewModel in AllSyncPairs)
     {
         if (syncPairViewModel.Description == e.OldSyncPair.Description)
         {
             // If it is the same view model, remove it from observable collection.
             if (AllSyncPairs.Contains(syncPairViewModel))
             {
                 AllSyncPairs.Remove(syncPairViewModel);
                 break;
             }
         }
     }
 }
        /// <summary>
        /// Clean up.
        /// </summary>
        protected override void OnDispose()
        {
            // Destroy any sync pair view models.
            foreach (SyncPairViewModel custVM in AllSyncPairs)
            {
                custVM.Dispose();
            }

            // Remove sync pairs.
            AllSyncPairs.Clear();

            // Raise event to notify that collection has changed.
            AllSyncPairs.CollectionChanged -= OnCollectionChanged;

            // Detach event.
            _syncPairRepository.SyncPairAdded -= OnSyncPairAddedToRepository;
        }