【问题标题】:Flex 3: How can I change a PopupButton into a regular Button when there's only one menu item available?Flex 3:当只有一个菜单项可用时,如何将 PopupButton 更改为常规 Button?
【发布时间】:2010-11-21 11:17:27
【问题描述】:

我有一个仅包含 2 个操作的 PopUpButton。这两个动作彼此完全相反,并将对象上的布尔属性从真切换为假或从假切换为真。为了避免冗余,我一次只显示一个动作。因此,如果属性为 true,则不会显示将其更改为 true 的操作。

如果我的 PopUp 菜单只有一个选项,我想从显示中删除该菜单,并基本上将 PopUpButton 恢复为像常规按钮一样的行为和外观。到目前为止,我还没有真正找到在 ActionScript 中不添加、删除或修改按钮样式的好方法。

有没有一种好方法可以简单地告诉按钮隐藏 PopUp 切换?

PS:在我的具体示例中,是的,如果我只使用切换按钮可能会更容易。但是,我想在处理对象数组时重用这个按钮。如果我有多个,则该属性可能同时为真和假。在这种情况下,我想显示菜单,以便他们可以选择将所有对象的属性设置为的选项。

【问题讨论】:

    标签: apache-flex user-interface button menu


    【解决方案1】:

    您可以尝试为此使用 State。它将删除多选项弹出按钮并在其位置显示一个新的单选项按钮:

    <mx:states>
      <mx:State name="singleOptionState">
        <mx:AddChild relativeTo="{multiOptionPopUpButton}" position="after">
          <mx:Button id="singleOptionButton" 
            width="80" 
            label="{buttonLabel}" 
            click="onClick(event)" />
        </mx:AddChild>
        <mx:RemoveChild target="{multiOptionPopUpButton}" />
      </mx:State>
    </mx:states>
    

    当然,名称和属性将特定于您的应用程序。

    当您确定是时候显示单选项按钮时,就这样做

    currentState = "singleOptionState";
    

    当需要显示多选项弹出按钮时,只需执行以下操作:

    currentState = "";
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多