Pergunta

Considere o seguinte exemplo botão de opção.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
    private function getRb1():RadioButton {
        trace(rb1 == null);
        return rb1;                     
    }   
]]>
 </mx:Script>
<mx:VBox>
    <mx:RadioButtonGroup **id="rbg" selection="{getRb1()}**"/>      
    <mx:RadioButton id="rb1" label="Radio Button 1" />
    <mx:RadioButton id="rb2" label="Radio Button 2" />
    <mx:RadioButton id="rb3" label="Radio Button 3" />
</mx:VBox>  
 </mx:Application>

O problema é que eu não pode se referir a rb1 ao definir RadioButtonGroup, rb1 é nulo nesse momento, mas eu posso usar o selectedValue para definir o selction inicial.

Eu estava pensando é isso alguns casos especiais ou não é seguro para se referir aos componentes no mxml em geral.

Obrigado,

Foi útil?

Solução

Eu não tenho certeza do que você está pedindo, mas espero que isto vai responder a sua pergunta - a partir dos docs Flex:

RadioButtonGroup.selection
Contém uma referência ao momento RadioButton controlo selecionado na grupo. Você pode acessar a propriedade em apenas o ActionScript; não é configurável em MXML . A definição dessa propriedade como nulo anula o actualmente seleccionado controle RadioButton.

Em geral, porém, fazendo referências componentes em MXML é totalmente bem; é assim que os efeitos são muitas vezes manipulados, entre muitas outras coisas. Por exemplo:

<mx:Glow id="g" />
<mx:Label showEffect="{g}" />

No entanto, no seu caso, supondo que você está tendo problemas para definir o item selecionado, pode ser que você não tenha especificado o atributo group nos botões de rádio; omitindo que destaca a componente de grupo a partir dos botões individuais. Depois de acrescentar que, você pode vincular propriedades seleção do grupo usando uma variável Bindable contendo uma referência a um componente, assim:

<mx:Script>
    <![CDATA[

        [Bindable]
        private var selectedRadioButton:RadioButton;    

        private function this_creationComplete(event:Event):void
        {
            selectedRadioButton = rb1;
        }

        private function btn_click(event:Event):void
        {
            selectedRadioButton = rb2;
        }

    ]]>
 </mx:Script>
<mx:VBox>
    <mx:RadioButtonGroup id="rbg" selection="{selectedRadioButton}" />
    <mx:RadioButton id="rb1" group="{rbg}" label="Radio Button 1" />
    <mx:RadioButton id="rb2" group="{rbg}" label="Radio Button 2" />
    <mx:RadioButton id="rb3" group="{rbg}" label="Radio Button 3" />

    <mx:Button label="Choose a Different Button" click="btn_click(event)" />
</mx:VBox> 

Isso faz sentido? Esperemos que não é completamente fora da marca; enviar de volta e deixe-me saber e eu vou tentar ajudar da melhor forma possível.

Outras dicas

Geralmente: só porque um controle foi declarado em MXML não significa que ele está disponível em tempo de execução (ele pode ser excluído do AS, não criado, no entanto, não adicionado ao palco, portanto, algumas propriedades ainda não estão disponíveis). Isto indica que não é seguro para componentes de acesso em tempo de execução e depender de valores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top