Flex/AS3 如何突出显示数据网格行?

in Flex/AS3 how can I highlight a datagrid row?

我正在编写一个应用程序,使用数据网格。各行根据数据显示不同的颜色。当用户选择一行时,颜色会变浅一些。

不幸的是,其中一位用户认为它的对比度不够,想要一个更引人注目的视觉指示器。我的两个想法是;

A) 在选定的整行周围绘制一个矩形。 B) 添加一个包含图像的列,我根据是否选择该行来隐藏或显示该图像。

我沿着路径 A. 走了一会儿,到达了函数中的位置;

覆盖受保护的函数 drawHighlightIndicator

我在查看特定行时能够识别,但无法确定如何绘制矩形。

所以我回溯并查看了 B。我能够创建一个带箭头的项目渲染器,但我不知道如何在选中时打开和关闭它。我在主模块中有一个点击事件,但无法引用回项目渲染器组件。

我可以在数组集合中设置一个值,然后进行刷新,这可能会起作用,但往往会将选定的行移动到数据网格显示区域的顶部。

所以如果有人能在 A 或 B 上帮助我,我将不胜感激。这是一个 DataGrid,而不是 AdvancedDataGrid。

由于您使用的是 mx.controls.DataGrid,覆盖 drawHighlightIndicator 可能类似于以下示例,它在选择标记周围绘制 1px 红色边框:

protected function drawHighlightIndicator(
    indicator:Sprite, x:Number, y:Number,
    width:Number, height:Number, color:uint,
    itemRenderer:IListItemRenderer):void
{
    var width:int = unscaledWidth - viewMetrics.left - viewMetrics.right;
    var borderColor:uint = 0xff0000;
    var g:Graphics = Sprite(indicator).graphics;
    g.clear();
    g.beginFill(borderColor);
    g.drawRect(0, 0, width, height);
    g.beginFill(color);
    g.drawRect(1, 1, width - 2, height - 2);
    g.endFill();
    indicator.x = x;
    indicator.y = y;
}