diff --git a/src/Element/Collection.php b/src/Element/Collection.php
index 2d58b67f..fbb793ed 100644
--- a/src/Element/Collection.php
+++ b/src/Element/Collection.php
@@ -261,16 +261,18 @@ public function allowValueBinding()
      * Bind values to the object
      *
      * @param array $values
+     * @param array $validationGroup
+     *
      * @return array|mixed|void
      */
-    public function bindValues(array $values = [])
+    public function bindValues(array $values = [], array $validationGroup = null)
     {
         $collection = [];
         foreach ($values as $name => $value) {
             $element = $this->get($name);
 
             if ($element instanceof FieldsetInterface) {
-                $collection[] = $element->bindValues($value);
+                $collection[] = $element->bindValues($value, $validationGroup);
             } else {
                 $collection[] = $value;
             }
diff --git a/src/Fieldset.php b/src/Fieldset.php
index 89086707..ea26ad5b 100644
--- a/src/Fieldset.php
+++ b/src/Fieldset.php
@@ -557,9 +557,11 @@ public function allowValueBinding()
      * Bind values to the bound object
      *
      * @param array $values
+     * @param array $validationGroup
+     *
      * @return mixed|void
      */
-    public function bindValues(array $values = [])
+    public function bindValues(array $values = [], array $validationGroup = null)
     {
         $objectData = $this->extract();
         $hydrator = $this->getHydrator();
@@ -568,6 +570,10 @@ public function bindValues(array $values = [])
         foreach ($this->iterator as $element) {
             $name = $element->getName();
 
+            if ($validationGroup && (array_key_exists($name, $validationGroup) || !in_array($name, $validationGroup))) {
+                continue;
+            }
+
             if (!array_key_exists($name, $values)) {
                 if (!($element instanceof Collection)) {
                     continue;
@@ -579,7 +585,7 @@ public function bindValues(array $values = [])
             $value = $values[$name];
 
             if ($element instanceof FieldsetInterface && $element->allowValueBinding()) {
-                $value = $element->bindValues($value);
+                $value = $element->bindValues($value, empty($validationGroup[$name]) ? null : $validationGroup[$name]);
             }
 
             // skip post values for disabled elements, get old value from object
diff --git a/src/Form.php b/src/Form.php
index 7cd274cc..87736634 100644
--- a/src/Form.php
+++ b/src/Form.php
@@ -357,13 +357,14 @@ public function bindValues(array $values = [])
         }
 
         $data = $this->prepareBindData($data, $this->data);
+        $validationGroup = $this->getValidationGroup();
 
         // If there is a base fieldset, only hydrate beginning from the base fieldset
         if ($this->baseFieldset !== null) {
             $data = $data[$this->baseFieldset->getName()];
-            $this->object = $this->baseFieldset->bindValues($data);
+            $this->object = $this->baseFieldset->bindValues($data, $validationGroup[$this->baseFieldset->getName()]);
         } else {
-            $this->object = parent::bindValues($data);
+            $this->object = parent::bindValues($data, $validationGroup);
         }
     }
 
diff --git a/test/FormTest.php b/test/FormTest.php
index f5a8ccca..7f2841d4 100644
--- a/test/FormTest.php
+++ b/test/FormTest.php
@@ -567,6 +567,35 @@ public function testSettingValidationGroupBindsOnlyThoseValuesToModel()
         $this->assertObjectNotHasAttribute('foobar', $model);
     }
 
+    public function testSettingValidationGroupWithoutCollectionBindsOnlyThoseValuesToModel()
+    {
+        $model = new stdClass;
+        $dataWithoutCollection = [
+            'foo' => 'abcde'
+        ];
+        $this->populateForm();
+        $this->form->add([
+            'type' => 'Zend\Form\Element\Collection',
+            'name' => 'categories',
+            'options' => [
+                'count' => 0,
+                'target_element' => [
+                    'type' => 'ZendTest\Form\TestAsset\CategoryFieldset'
+                ]
+            ]
+        ]);
+        $this->form->setHydrator(new Hydrator\ObjectProperty());
+        $this->form->bind($model);
+        $this->form->setData($dataWithoutCollection);
+        $this->form->setValidationGroup(['foo']);
+        $this->form->isValid();
+
+        $this->assertObjectHasAttribute('foo', $model);
+        $this->assertEquals('abcde', $model->foo);
+        $this->assertObjectNotHasAttribute('categories', $model);
+        $this->assertObjectNotHasAttribute('foobar', $model);
+    }
+
     public function testCanBindModelsToArraySerializableObjects()
     {
         $model = new TestAsset\Model();