怎么在Flex的自定义组件中调用程序中的ViewStack,来进行页面切换

如何在Flex的自定义组件中调用程序中的ViewStack,来进行页面切换。
我在Flex项目中自定义了一个组件,把它加入到程序中的ViewStack中去,这个组件上有一个按钮,想用它来实现页面的切换。但是不能直接调用。希望哪位高手能给出解决办法。我也想到了建一个as文件来维护一个值。用这个值来控制ViewStack的显示页面。但是没有实现成功。希望能得到详细一些的指导。谢谢!

------解决方案--------------------
楼主请看我的留言板项目源码,相信对你有所帮助,里面就用到了自定义组件的viewstack:http://download.csdn.net/source/643705
------解决方案--------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:view="view.*" styleName="myPanel" creationComplete="init()" title="查看留言列表" width="480" height="334">
<mx:Script>
<![CDATA[
import events.replyNoteEvent;
import vo.notevo;
import mx.controls.Alert;
import events.noteEvent;
import control.noteControl;
import model.ModelLocator;
[Bindable]
public var ins:ModelLocator=ModelLocator.getInstance();
private var dbcon:noteControl=new noteControl();
internal function init():void{
ins.addEventListener(noteEvent.addNoteEvent,addviewhandler);
ins.addEventListener(noteEvent.replyNoteResult,eventhandler);
ins.addEventListener(noteEvent.replyNoteFail,eventhandler);
ins.addEventListener(noteEvent.removeNoteResult,eventhandler);
ins.addEventListener(noteEvent.removeNoteFail,eventhandler);
}
internal function loadData():void{
dbcon.getAllNotes();
}
internal function addviewhandler(evt:Event):void{

notevs.selectedChild=add_note;
}
internal function eventhandler(evt:Event):void{
if(evt.type == noteEvent.replyNoteResult){
Alert.show("回复已成功保存","提示");
}else if(evt.type == noteEvent.replyNoteFail){
Alert.show("添加回复失败,请重新再试!!","提示");
}else if(evt.type == noteEvent.removeNoteResult){
Alert.show("记录已被删除!!","提示");
notevs.selectedChild=list_note;
}else if(evt.type == noteEvent.removeNoteFail){
Alert.show("无法删除记录,请重新再试!!","提示");
}
}
internal function selectNote():void{
var note:notevo=notelist.selectedItem as notevo;
ins.selectedNote=note;
notevs.selectedChild=view_note;
}
internal function viewnotelist():void{
notevs.selectedChild=list_note;
}
internal function changeview():void{
btnref.visible=tiptxt.visible=false;
if(notevs.selectedChild == list_note){
btnref.visible=tiptxt.visible=true;
title="查看留言列表";
}else if(notevs.selectedChild == view_note){
title="查看留言详情";
}else{
title="撰写新留言";
}
}
internal function saveReply(evt:replyNoteEvent):void{
dbcon.replyNote(evt.nid,evt.reply);
}
internal function removeNote(evt:Event):void{
dbcon.removeNote(ins.selectedNote.nid);
}
]]>
</mx:Script>
<mx:ViewStack x="10" y="10" id="notevs" width="480" height="400" change="changeview()">
<mx:Canvas id="list_note" width="100%" height="100%" showEffect="WipeDown" hideEffect="WipeUp">
<mx:List id="notelist" itemClick="selectNote()" styleName="myList" itemRenderer="view.noteThumb" dataProvider="{ins.notes}" width="100%" height="100%"/>
</mx:Canvas>
<view:noteDetail id="view_note" showEffect="WipeDown" hideEffect="WipeUp" backtolist="viewnotelist()" savereply="saveReply(event)" removeNote="removeNote(event)"/>