首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >updateDisplayList on List SelectionChanged

updateDisplayList on List SelectionChanged
EN

Stack Overflow用户
提问于 2014-08-12 16:22:50
回答 1查看 270关注 0票数 0

我有一个名为AdvancedPanel的类,标题中有按钮,它继承PanelSkin类,AdvancedPanelSkin继承PanelSkin类。我在我的AdvancedPanel中有一个列表,当在列表上选择一个项目时,我希望启用一个按钮。

我已经在子皮肤类中设置了在重写的updateDisplayList()中处理启用和禁用功能的功能,但是当我将invalidateDisplayList()调用放到List的changeHandler中时,它不会被调用。下面是我代码的相对部分:

代码语言:javascript
复制
//AdvancedPanelSkin.as
//..
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
    super.updateDisplayList(unscaledWidth, unscaledHeight);
    addBtn.enabled = _hostComponent_.addButtonEnabled;
    removeBtn.enabled = _hostComponent_.removeButtonEnabled;  
}
//..

代码语言:javascript
复制
//form.mxml
//..
<fx:Script>
    <![CDATA[
        //...
        protected function list_changeHandler(event:IndexChangeEvent):void
        {
            panel.invalidateDisplayList(); // <- It doesn't call updateDisplayList() on AdvancedPanelSkin
        }
    ]]>
</fx:Script>
<components:AdvancedPanel id="panel" addButtonEnabled="true" removeButtonEnabled="{list.selectedIndex != -1}">
    <s:List id="list"
        //..
        change="list_changeHandler(event)"
    </s:List>   
</components:AdvancedPanel>
//..

我错过了什么吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-12 18:40:59

面板的无效显示列表不会导致其外观的显示列表无效。在思想上正确的做法是通过皮肤部件来控制宿主组件的皮肤,而不是从它的皮肤中控制它的成分。因此,添加按钮到您的面板作为皮肤部分,并覆盖updateDisplayList的面板,而不是它的皮肤。

AdvancedPanel.as

代码语言:javascript
复制
[SkinPart]
public var addBtn:Button;
[SkinPart]
public var removeBtn:Button;

override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
        addBtn.enabled = ...;
        removeBtn.enabled = ...;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25269364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档