2011-04-07 49 views
3

我發現了另一個類似的問題,但並不完全按照那裏的解釋,並不確定它是否適用於我。無法綁定警告:類不是IEventDispatcher

我收到錯誤:
警告:無法綁定到屬性上的類「對象」「說明」(類不是一個IEventDispatcher,請)

,這是隻有在數據綁定到一個列表作爲一個ArrayList,但。我曾經在一個Datagrid中(就像一個Array)一樣,並沒有引起任何問題。我不希望能夠將任何數據綁定回類的「對象」,甚至不能確定它指的是哪個對象。

我的目錄數據提供者是一個ArrayList ..從包含在另一個類的SQL查詢的結果事件填充:

private function loadDayComplete():void 
     { 
      var Meals:Array = _day.MealResults; 
      var MealsListResult:ArrayList = new ArrayList(Meals); 
      MealPanelDataGrid.dataProvider = Meals; 
      MealListView.dataProvider = MealsListResult; 
     { 

Day類我公司是一家數據持有人獲取的所有數據(從幾個表)24小時跨度..我有每個單獨的數據類型編輯它們的類。 但是我不確定如果我不打算編輯這些值,我甚至不需要擔心警告。儘管每當我觸摸任何東西時,它都會完全監聽控制檯,所以我真的很想擺脫它。 我嘗試了一個對象代理,正如我在別處所看到的,但沒有任何更改。而且我很困惑,爲什麼當它不在數據網格上時它突然成爲列表組件上的問題......無論如何,文本現在都在標籤字段中,它甚至不能編輯。

回答

6

導致此警告的對象可能是Meals數組中的項目。 確保這些項目是強類型的(數據傳輸對象/值對象模式)並且Description字段標記爲[Bindable]

根據您正在使用的遠程處理機制,您可能可以使用類似makeObjectsBindable標誌的標誌,該標誌將替換返回的Object項目與可綁定ObjectProxy實例。

但我會建議強打字。

+0

我將[Bindable]添加到所有被實例化的類中的所有變量(有2個),現在它正在工作!優秀。 – Damon 2011-04-09 04:09:58

+0

ObjectProxy便於快速解決方案。但是,我同意Iwo Banas的觀點,您應該更喜歡強類型對象,並使用正確的可綁定屬性 - 如果您願意,可以提供很多良好的編譯器支持。我會進一步提倡不使用通用[Binding]標籤的性能,而是使用[Binding(「customChangeEvent」)]模式。這通過允許編譯器狹窄地聚焦事件監聽器來減少性能吮吸綁定事件「風暴」。由於這個原因,您可以在Adobe自己的代碼中看到這一點。 – verveguy 2011-06-15 15:12:21

0

您可以通過使您的dataProviderEventDispatcherObjectProxyEventDispatcher擺脫它。它會自動將數據包裝到指定深度或無限深度(默認行爲)。

metaPanelDataGrid.dataProvider = new ObjectProxy(meals); 

它基本上與ArrayCollection一樣,但更深。