2009-02-05 7 views
1

Je travaille dans une application multi-langues à l'aide ResourceBundle dans Flex 3. Je l'affichage des données dans un DataGrid et défini DataGridColumn headerText comme celui-ciFlex 3 DataGridColumn HeaderText Localisation

headerText="{localizedHeaderText('LABEL_USER_NAME')} 

cette fonction retourne le localisé étiquette pour le nom d'utilisateur, mais quand je sélectionne dynamiquement une autre langue evertying est rafraîchi mais les étiquettes headerText?

Des pensées?

Merci

Répondre

3

À moins que vous prenez la méthode localizedHeaderText bindable, la liaison ne seront jamais réévaluées, car il ne connaît pas l'événement de changement de resourceManager.

En supposant que vous êtes dans une sous-classe UIComponent, vous devrez effectuer les opérations suivantes:

  1. override resourcesChanged et l'envoi d'un événement personnalisé
  2. ajouter [Bindable (event = "customEvent")] au-dessus du procédé

Exemple de code:

override protected function resourcesChanged():void { 
    super.resourcesChanged(); 
    dispatchEvent(new Event("localeChange")); 
} 

et

[Bindable(event="localeChange")] 
public function localizedHeaderText(key:String):String { 
    return resourceManager.getString('resources', key); 
}