Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 在自定义MXML组件中分配子组件属性的MXML语法是什么?_Apache Flex_Syntax_Mxml - Fatal编程技术网

Apache flex 在自定义MXML组件中分配子组件属性的MXML语法是什么?

Apache flex 在自定义MXML组件中分配子组件属性的MXML语法是什么?,apache-flex,syntax,mxml,Apache Flex,Syntax,Mxml,我正在开发一个定制的Flex4组件,它是两个现有Flex组件的集合。我希望能够为组件指定自己的自定义属性,并通过MXML访问现有的公共子组件属性。例如,我可能想调整标签和文本输入的字体颜色或样式 聚合标签和文本输入的玩具组件: <?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/

我正在开发一个定制的Flex4组件,它是两个现有Flex组件的集合。我希望能够为组件指定自己的自定义属性,并通过MXML访问现有的公共子组件属性。例如,我可能想调整标签和文本输入的字体颜色或样式

聚合标签和文本输入的玩具组件:

<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:mx="library://ns.adobe.com/flex/mx" 
     >  
<fx:Script>
    <![CDATA[
        [Bindable] public var prompt:String = "default prompt";
        [Bindable] public var input:String = "default inpput";
    ]]>
</fx:Script>
<s:VGroup>
    <s:Label id="cLabel" text="{prompt}" />
    <s:TextInput id="cTextInput" text="{input}" />
</s:VGroup>
</s:Group>

但我对MXML的语法感到困惑。这似乎很容易,但我还没有找到答案。非常感谢您的帮助。

您不能用MXML标记/值将显示层次结构串联起来。正如您所指定的,您可以在ActionScript中完成,但即使这样也可能被认为是一种不好的做法

我要指出,标签上和文本输入上都不是属性。它们是样式,因此,您拥有的代码:

myInput.cLabel.color = "0xffffff";
很可能会引发错误,因为颜色不是属性。您必须使用如下代码:

myInput.cLabel.setStyle('color',"0xffffff");
private var _property : String;
public function get property():String{
 return _property;
}
public function set property(value:String){
 _property = value;
 myChildComp.property = value;
}
然而,由于风格通常由孩子继承;我猜想,在顶层组件中,您可以设置样式,它会立即自动传递给孩子们。因此,您应该能够做到:

myInput.setStyle('color',"0xffffff");
或在MXML中:

<local:myInput prompt="name" input="please enter name" color="0xffffff" fontStyle="bold"  >
</local:myInput>

如果你需要在很多地方这样做的话,它会很糟糕。如果此组件的封装不是优先事项;只需在ActionScript中设置它们

感谢您对样式值的澄清,我应该使用一个更好的示例,它依赖于属性。在我看来,为聚合类的每个接口编写getter和setter比将正交类组合在一起更紧密地耦合。我想如果我想把组件组合在一起,我只需要习惯于写很多锅炉板。另一种选择是创建一个MXML模板类并将整个组件作为参数传入吗?类似于FlexForm类的东西?
<local:myInput prompt="name" input="please enter name" color="0xffffff" fontStyle="bold"  >
</local:myInput>
private var _property : String;
public function get property():String{
 return _property;
}
public function set property(value:String){
 _property = value;
 myChildComp.property = value;
}