2012-06-28 58 views
1

我在Flex中僅使用一個DividedBox,其中只包含一個數據網格。當我點擊Datagrid上的一個項目時,寬度爲0%的第二個元素(Spark Group)被添加到分割框中以顯示圖像。Flex DividedBox兒童顯示在外部

問題是,當第二個元素添加到DividedBox時,圖像部分顯示在DividedBox外面,我不想有這種行爲。

這是一個有趣的代碼:

<mx:DividedBox direction="horizontal" id="divider" borderColor="red" borderStyle="solid" borderVisible="true" right="10" left="10" top="10" bottom="10"> 
    <s:Group width="100%" height="100%"> 
     <!--datagrid--> 
    </s:Group> 
</mx:DividedBox> 

這裏是添加則DividedBox(簡化代碼)的第二個孩子的一段代碼:

private var _pdf_preview:Group = new Group(); 
[Bindable] 
[Embed(source="assets/image/llama.jpg")] 
private var imgClass:Class; 

protected function itemOnClickHandler(event:MouseEvent):void 
{ 
    _pdf_preview = new Group(); 
    var img:Image = new Image(); 
    img.source = imgClass; 
    _pdf_preview.addElement(img); 
    _pdf_preview.percentWidth = 0; 
    divider.addElement(_pdf_preview); 
} 

這裏是一個屏幕問題(順便說一下,不要注意我的技能瘸子:))。作爲新用戶,我無法將圖片綁定到我的信息:screen showing my problem紅色邊框顯示分隔框的限制

謝謝。 我希望沒有太多的錯誤,英文不是我的母語。對不起,有任何英文錯誤。

PS:我無法添加「DividedBox」標籤,因爲它之前不存在,而我是「新用戶」,因此我無法創建新標籤。

回答

1

可以使用clipContent酒店在則DividedBox的邊緣切斷圖像:

<mx:DividedBox clipContent="true" /> 

當使用Spark容器,clipAndEnableScrolling是你需要達到同樣的目標財產。

我還想指出,您通常不需要通過ActionScript動態添加組件。您可以改用'狀態'。例如:

<s:states> 
    <s:State name="normal" /> 
    <s:State name="image" /> 
</s:states> 

<mx:DividedBox clipContent="true"> 
    <s:DataGrid /> 
    <s:Image includeIn="image" /> 
</mx:DividedBox> 

現在,所有你需要做的,以顯示圖像,設置了currentStateimage

+0

謝謝你,clipContent屬性作出了工作!關於我可以在mxml中做到這一點的事實。也許我做錯了,但我不是Flex的mxml部分的忠實粉絲,我寧願做ActionScript中的大部分事情。 –

+0

@pataprout我曾經分享過你的擔憂,但我不再這樣做。在AS中這樣做會讓你的生活變得艱難。 MXML確實使一些事情變得更容易。您只需要學習如何將MXML視圖聲明與ActionScript行爲代碼很好地分開。 – RIAstar

+0

有時它做這項工作,有時候不行。特別是,當我使用mxml配置事件時,遇到了很多問題,但是在完全AS中添加監聽器時沒有問題。我確信我正在處理的問題完全在於我對mxml的誤解,但我無法找到如何在MXML中進行管理。 –