0

我有以下问题:我的任务是为 Flex 4.5 中的两个图表设置数据提示样式。两个图表都位于两个不同<Group>的基础组件中,这些组件添加到<Application>

因此,经过彻底的研究,这是我尝试做的。首先应用一个 css 降序选择器:

#container#chart1 chartClasses|DataTip{     
    backgroundColor:white;
    backgroundAlpha:0.01;
    fontSize: 12; 
    fontWeight:bold;
    fontStyle:italic; 
}

因此,带有 Id=container 的组件及其内部带有 id="chart1" 的图表它不起作用,尽管 Adob​​e 文档说它应该这样做。我认为应该解决它的另一种方法是放置这种 CSS 样式

chartClasses|DataTip{
    backgroundColor:white;
    backgroundAlpha:0.01;
    fontSize: 12; 
    fontWeight:bold;
    fontStyle:italic; 
}

在这些组件中的每一个内部,但猜猜看,图表数据提示类选择器仅在<Application>级别上工作(然后它将相同的样式应用于应用程序中找到的所有图表数据提示。因此,将其放在包含图表的两个组件中的每一个中都没有效果。

接下来,我创建了一个输入到图表的 dataTipRenderer 样式的类。然后在名为 MyCustomDataTipRenderer 的类中设置类选择器:

.dataTip{
    backgroundColor:white;
    backgroundAlpha:0.01;
    fontSize: 12; 
    fontWeight:bold;
    fontStyle:italic; 
}

是的,它有效。但是假设我希望能够根据托管图表为自定义数据提示渲染器设置不同的样式。我该怎么做?似乎 Flex SDK 没有以任何方式暴露在 datatipRenderer 中。所以如果我像这样有效地设置自定义 datatip 渲染器:

columnchart1.setStyle("dataTipRenderer",CustomDataTip); 

然后我希望能够访问 CustomDataTip 类的实例。但我不能。所以目前我唯一能做的就是为每个图表创建一个不同的自定义数据提示渲染器类。如果您只有几个想要设置样式的图表,但是如果我们有很多图表,我们该怎么办?

4

1 回答 1

1

尝试将以下内容添加到css文件的开头(假设文件名是chartStyles.css)

@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "http://www.adobe.com/2006/mxml";

mx|#container#chart1 chartClasses|DataTip{     
    backgroundColor:white;
    backgroundAlpha:0.01;
    fontSize: 12; 
    fontWeight:bold;
    fontStyle:italic; 
}

s|#container#chart1 chartClasses|DataTip{     
    backgroundColor:white;
    backgroundAlpha:0.01;
    fontSize: 12; 
    fontWeight:bold;
    fontStyle:italic; 
}

如果 css 样式直接放在主应用 mxml 中的样式标签中,则开头不需要@namespace 标签。您可以直接添加 mx| 和 s| 作为样式的前缀。

于 2011-11-02T07:57:44.443 回答