2008-08-08 14 views
7

Weiß jemand warum, wenn Sie BindingUtils für die selectedItem -Eigenschaft einer ComboBox verwenden, erhalten Sie die folgende Warnung? Irgendwelche Ideen, wie man das Problem löst?Wie entferne ich die Warnung "multiple describeType entries"?

Die Bindung funktioniert immer noch richtig, aber es wäre nett, die Warnung loszuwerden.

warning: multiple describeType entries for 'selectedItem' on type 'mx.controls::ComboBox': 
<accessor name="selectedItem" access="readwrite" type="Object" declaredBy="mx.controls::ComboBase"> 
    <metadata name="Bindable"> 
    <arg key="" value="valueCommit"/> 
    </metadata> 

Antwort

0

Hier ist der Code. Es handelt sich im Grunde um eine Kopie von "BindingUtils.bindProperty", die für ein Kombinationsfeld eingerichtet wurde, sodass das Kombinationsfeld und das Modell aktualisiert werden, wenn sich eines der beiden ändert.

public static function bindProperty2(site:Object, prop:String, host:Object, chain:Object, commitOnly:Boolean = false):ChangeWatcher 
{ 
    var cbx:ComboBox = null; 
    if (site is ComboBox) { cbx = ComboBox(site); } 
    if (host is ComboBox) { cbx = ComboBox(host); } 
    var labelField:String = "listID"; 

    var w:ChangeWatcher = ChangeWatcher.watch(host, chain, null, commitOnly); 

    if (w != null) 
    { 
     var func:Function; 

     if (site is ComboBox) 
     { 
      func = function(event:*):void 
      { 
       var dp:ICollectionView = ICollectionView(site.dataProvider); 
       var selItem:Object = null; 

       for (var i:int=0; i<dp.length; i++) 
       { 
        var obj:Object = dp[i]; 
        if (obj.hasOwnProperty(labelField)) 
        { 
         var val:String = String(obj[labelField]); 
         if (val == w.getValue()) 
         { 
          selItem = obj; 
          break; 
         } 
        } 
       } 

       site.selectedItem = selItem; 
      }; 

      w.setHandler(func); 
      func(null); 
     } 
     else 
     { 
      func = function(event:*):void 
      { 
       var value:Object = w.getValue(); 
       if (value == null) 
       { 
        site[prop] = null; 
       } 
       else 
       { 
        site[prop] = String(w.getValue()[labelField]); 
       } 
      }; 
      w.setHandler(func); 
      func(null); 
     } 
    } 

    return w; 
} 
+0

Dies scheint keine Antwort auf die Frage zu sein – rfunduk

1

Es wäre besser, die betreffende Eigenschaft zu überschreiben und sie als endgültig zu deklarieren.