Dropdownlist two-way databind - componente Flex problema

Estou tentando criar um um componente Dropdownlist que funcione two-way databind, fiz o componente, mas esta instavel tem hora q ele funciona e tem hora q não abaixo segue a ideia de uso e o componente.

Class User_DTO:
var id:int;
var nome:String;
var status:int;

// ex: minha array ficaria
private var status:ArrayCollection = new ArrayCollection([{id:"1", descricao: "aberto"}, {id: "2", descricao: "fechado"}]);

                <components:SDropDownList x=width="260" id="dd_status"
                                         dataProvider="{status}"
                                         keyField="id"
                                         selectedValue="@{user.status}"                                      
                                         labelField="descricao"/>

O componente…

package components
{
    import flash.events.Event;
   
    import mx.collections.IList;
    import mx.utils.ObjectUtil;
   
    import spark.components.DropDownList;
   
    public class SDropDownList extends DropDownList
    {
        public function SDropDownList()
        {
            super();
        }       
               
        //Campo que será utilizado na pesquisa dentro do this.dataProvider
        private var _keyField:String;
       
        [Bindable]
        public function get keyField():String
        {
            return _keyField;
        }
       
        public function set keyField(value:String):void
        {
            _keyField = value;
        }       
       
        //Campo usado para realizar o bind com o DTO.       
        private var _selectedValue:*;                       
       
        [Bindable]
        //        [Bindable("atualiza")]
        public function get selectedValue():*
        {
            return _selectedValue;
        }
       
        public function set selectedValue(value:*):void
        {
            _selectedValue = getValues(value);           
        }       
       
        private function getValues(value:*):*
        {
            if (value == null)
            {
                selectedIndex = -1;
                return;
            }
           
            for each (var obj:Object in dataProvider)
            {
                if (ObjectUtil.compare(obj[keyField], value) == 0)
                {                   
                    //selectedItem = obj;
                    selectedIndex = dataProvider.getItemIndex(obj);
                    return obj[keyField];
                }
            }
        }
                       
        override public function set dataProvider(value:IList):void
        {
            super.dataProvider = value;
           
            if (selectedValue != null)
                selectedValue = getValues(selectedItem[keyField]);
        }
    }       
}

Savoine,
Uma sugestão é utilizar o selectedItem no lugar.

[]s

Ja tentei ai que não funciona mesmo… rsrsrsrsrs