         CommandButton.validateCmd(cmdOrFn);
         _cmdOrFn = cmdOrFn;
 
-        addEventListener(ListEvent.CHANGE, handleChange);
+        addEventListener(ListEvent.CHANGE, handleChange, false, int.MIN_VALUE);
     }
 
     /**

     * The value that will be passed to the command or function based on dataField and the
     * current selected item.
     */
    public function getSelectedData () :Object
    {
        return (dataField != null) ? this.selectedItem[dataField] : this.selectedItem;
    }

    protected function handleChange (event :ListEvent) :void
    {
        if (this.selectedIndex != -1) {
            CommandEvent.dispatch(this, _cmdOrFn, getSelectedData());
        }
    }


    /**
     * Set the selectedItem based on the data field.
     */
    public function set selectedData (data :Object) :void
    {
        for (var ii :int = 0; ii < dataProvider.length; ++ii) {
            if (Util.equals(data, itemToData(dataProvider[ii]))) {
                this.selectedIndex = ii;
                return;
            }
