Vous ne pouvez pas instancier un élément basé sur id
. Faites votre TitreWindow dans une autre classe et instancier cela.
PassTitleWindow.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
title="Pass"
layout="vertical"
width="480"
height="240"
titleStyleName="titleText"
backgroundColor="white"
backgroundAlpha="1.0"
borderColor="white"
borderAlpha="1.0"
cornerRadius="0"
showCloseButton="true"
implements="mx.core.IDataRenderer">
<fx:Script>
<![CDATA[
private var _data:Object;
[Bindable(event="dataChange")]
/**
* implementing mx.core.IDataRenderer.
* Set this value from outside
*/
public function get data():Object
{
return _data;
}
/**
* @private
*/
public function set data(value:Object):void
{
if (_data == value)
return;
_data = value;
dispatchEvent(new Event("dataChange"));
}
]]>
</fx:Script>
<mx:Text text="Please fill out the following criteria and then click continue."
width="100%"
styleName="headingText"/>
<mx:Form x="-12" y="150" id="passView">
<mx:FormItem label="Age" >
<s:TextInput id="ageTextInput" "@{data.age}"/>
</mx:FormItem>
<mx:FormItem label="Grade" >
<s:TextInput id="gradeTextInput"/>
</mx:FormItem>
</mx:Form>
</mx:TitleWindow>
SampleApp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="creationCompleteHandler()">
<fx:Script>
<![CDATA[
import mx.managers.PopUpManager;
protected var passWindow:PassTitleWindow = new PassTitleWindow;
protected function creationCompleteHandler():void
{
createForm();
}
protected function createForm():void
{
passWindow = PopUpManager.createPopUp(this, PassTitleWindow, true) as PassTitleWindow;
passWindow.data = studentGrid.selectedItem;
PopUpManager.centerPopUp(passWindow);
}
]]>
</fx:Script>
</s:Application>
espoir qui aide, Lance
Merci pour la réponse. Le problème que j'avais avec cette approche était que dans un autre composant, j'obtenais studentsGrid est une méthode non définie: La raison pourquoi studentsgrid est défini dans l'application et non dans le composant et je suppose que le composant ne peut pas communiquer avec le DataGrid dans l'application. –
JohnMerlino
Je vois. Il est recommandé de séparer vos données afin que les rendus d'élément n'aient pas besoin de référencer leur parent. Vous pouvez le faire en implémentant IDataRenderer (une méthode get/set pour "data") et en définissant les données sur l'élément sélectionné. J'ai mis à jour le code pour le montrer. Faites-moi savoir si cela vous a été utile. –
Enfin obtenu pour mettre à jour le bon article, grâce à vos conseils et ce lien: http://livedocs.adobe.com/flex/3/html/help.html?content=cellrenderer_7.html. Je ne pense pas que je comprends parfaitement cette ligne: dispatchEvent (new Event ("dataChange")). Mais je vais lire l'article à nouveau et voir si elle offre des idées. Merci de m'avoir conduit sur le bon chemin. – JohnMerlino