Flex AdvancedDataGrid:MXML ItemRenderers 不默认为默认样式

发布于 2024-07-12 09:03:46 字数 213 浏览 10 评论 0原文

我知道 AdvancedDataGrid 有 styleFunction 回调,但我不想更改样式; 我希望 itemRenderer 获得其他所有内容(包括普通列)使用的全局样式。

我的内联项目渲染器使用默认样式,但不是我作为单独的 MXML 类创建的样式(它们扩展了 Canvas)。

我需要摇动任何句柄才能将样式传播到我的项目渲染器中吗?

谢谢

I know AdvancedDataGrid has a styleFunction callback, but I don't want to change the style; I want the itemRenderer to get the global style that everything else (including normal columns) uses.

My in-line item renderers use the default style, but not the ones I created as separate MXML classes (they extend Canvas).

Any handle I need to jiggle to propagate the style into my item renderers?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷清清 2024-07-19 09:03:46

我不认为你可以传播。 看起来 styleFunction 是为了完全不同的东西。 但是您可以访问任何 CSS 属性

var styleDecl:CSSStyleDeclaration = StyleManager.getStyleDeclaration("YourTagOrClassName");

,然后:

styleDecl.getStyle(property);

如果您想直接从 AdvancedDataGrid 获取样式声明,您必须获取渲染器 listData:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    implements="mx.controls.listClasses.IDropInListItemRenderer">

    <mx:Script>
        import mx.controls.dataGridClasses.DataGridListData;
        import mx.controls.listClasses.BaseListData;
        [Bindable("dataChange")] private var _listData : BaseListData;
        public function get listData():BaseListData
        {
            return _listData;            
        }                   
        public function set listData( value : BaseListData ) : void
        {
            _listData = value;
        }
        override public function set data(value:Object):void
        {
            super.data = value;
            if (this.listData)
                ((this.listData as DataGridListData).owner as AdvancedDataGrid).getStyle(...);
        }
    </mx:Script>

</mx:Canvas>

I don't think you can propagate. Seems like styleFunction is for something completly different. But you can access any CSS property

var styleDecl:CSSStyleDeclaration = StyleManager.getStyleDeclaration("YourTagOrClassName");

and then:

styleDecl.getStyle(property);

If you want to get style declaration directly from the AdvancedDataGrid you have to get renderers listData:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    implements="mx.controls.listClasses.IDropInListItemRenderer">

    <mx:Script>
        import mx.controls.dataGridClasses.DataGridListData;
        import mx.controls.listClasses.BaseListData;
        [Bindable("dataChange")] private var _listData : BaseListData;
        public function get listData():BaseListData
        {
            return _listData;            
        }                   
        public function set listData( value : BaseListData ) : void
        {
            _listData = value;
        }
        override public function set data(value:Object):void
        {
            super.data = value;
            if (this.listData)
                ((this.listData as DataGridListData).owner as AdvancedDataGrid).getStyle(...);
        }
    </mx:Script>

</mx:Canvas>
一江春梦 2024-07-19 09:03:46

我的缺点

是它继承了 ADG 的风格; 该组件的样式未默认为全局样式。

My Bad

It was picking up the style from the ADG; that component's style was not defaulted to the global style.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文