0

DataGridに提供されたデータに、どのようにレンダリングするのが最適かを決定させたいと思います(つまり、データにレンダリングを実行するオブジェクトを運ばせます)。

たとえば、「renderer:IFactory」プロパティを持つ「Renderable」インターフェイスを作成し、次のように使用します。

<mx:DataGrid x="0" y="0" width="100%" dataProvider="{myDataProvider}">
    <mx:columns>
    <mx:DataGridColumn headerText="Task" width="100"
        itemRenderer="{(data as Renderable).renderer}"/>
    </mx:columns>
</mx:DataGrid>

しかし、これを行うには、Renderableを拡張する必要があります。これIEventDispatcherは少しのようです...

私も使ってみました:

itemRenderer="{(data as Renderable).getRenderer()}"

これは何もしません(実際、getRendererメソッドは呼び出されません)。

これを行うためのより良い方法はありますか?私は根本的に間違ったことをしていますか?

ありがとう!

4

2 に答える 2

2

間違っている可能性がありますが、上記のコードサンプルで参照している「データ」プロパティは、ビューの最上位コンテナの「データ」であり、DataGridの特定の行ではないと思います。他のいくつかのアプローチが思い浮かびます:

  1. 渡されるデータを調べ、提供されるデータのタイプに適したアイテムレンダラーを利用する単一アイテムレンダラークラスを実装します。
  2. DataGridのビューに、dataProviderを調べて、適切なアイテムレンダラークラスを返す関数を実装します。バインディング式を使用して、DataGridColumn.itemRendererプロパティ内でこれを呼び出します。
  3. 正しいitemRendererを設定するために、ロジックが組み込まれたDataGridColumnのサブクラスを実装します。

ビュー固有の「レンダラーデータ」をモデルのデータと混合しないことを実際にお勧めします。コアモデルデータを、レンダラー(一部の人はViewModelと呼ぶもの)と一緒に公開するオブジェクトでラップしない限り。

于 2009-05-27T18:47:30.527 に答える
0

getRendererを[Bindable]プロパティにします

于 2009-05-27T18:45:58.330 に答える