private void OnAddField()
 {
     using (Fields.AcquireLock())
     {
         var fieldViewModel = new FieldViewModel();
         fieldViewModel.PropertyChanged += FieldViewModelPropertyChanged;
         Fields.Add(fieldViewModel);
     }
     RaisePropertyChanged("CommandSyntax");
 }
 private void FieldViewModelPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
 {
     if (e.PropertyName == "DeleteRequested")
     {
         var fieldViewModel = sender as FieldViewModel;
         if (fieldViewModel != null)
         {
             using (Fields.AcquireLock())
             {
                 fieldViewModel.PropertyChanged -= FieldViewModelPropertyChanged;
                 Fields.Remove(fieldViewModel);
             }
         }
     }
     RaisePropertyChanged("CommandSyntax");
 }