         labelFieldOrFunctionChanged = true;
         invalidateProperties(); 
     }
-    
+
+
+    //----------------------------------
+    //  preventSelection
+    //----------------------------------
+
+    /**
+    *  @private
+    */
+    private var _preventSelection:Boolean = false;
+
+
+    /**
+    *  If <code>true</code> items will be prevented from being selected.  The <code>selectedIndex</code> value should always be -1.
+    *  When this is set to <code>true</code>, it will set the <code>requireSelection</code> to false.
+    *  Click events will continue to be called.
+    *
+    *  @default false
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 11.1
+    *  @playerversion AIR 3.4
+    *  @productversion Flex 4.10
+    */
+    public function get preventSelection():Boolean
+    {
+        return _preventSelection;
+    }
+
+    public function set preventSelection(newValue:Boolean):void
+    {
+        if (newValue == _preventSelection)
+        {
+            return;
+        }
+
+
+        if (newValue == true)
+        {
+            //Make sure to disable requireSelection since these two properties are polar opposites.
+            requireSelection = false;
+
+            //Remove any previous selection and allow it to update before enabling the prevent selection.
+            setSelectedIndex(NO_SELECTION, false);
+            validateNow();
+        }
+
+        _preventSelection = newValue;
+    }
+
+
     //----------------------------------
     //  requireSelection
     //----------------------------------

        var oldSelectedIndex:int = _selectedIndex;
        var oldCaretIndex:int = _caretIndex;
        var e:IndexChangeEvent;
        
        if (!allowCustomSelectedItem || _proposedSelectedIndex != CUSTOM_SELECTED_ITEM)
        {
            if (_proposedSelectedIndex < NO_SELECTION)

        // from false to true
        if (value == true)
        {
            //Make sure to disable preventSelection since these two properties are polar opposites.
            preventSelection = false;

            requireSelectionChanged = true;
            invalidateProperties();
        }
