2011-06-12 53 views
0

我有一個Actionscript類,我們將打電話給Person來讓示例變得簡單。我想要有一個DataGrid填充Person對象,其中有列顯示名稱,生日等東西。所有這些都很好,很簡單,但我還想添加一個複選框列以選擇DataGrid中的某些人。示例用例如下:Flex CheckBox ItemRenderer不綁定到對象?

  1. 顯示所有人。
  2. 用戶選中每個人旁邊的框,表示他們希望對這些選擇採取某些操作。
  3. 當用戶單擊按鈕時,會對用戶選擇採取某些操作。

這似乎是常見的解決方案是讓每個Person對象上Selected財產,但這並不是真的對我來說是很好的選擇。 Person對象在整個應用程序中使用,並且看起來非常不清楚Selected屬性,這實際上不是Person類的問題。

我喜歡像Person這樣的硬類的類型安全性,但我不知道如何解決這個看似簡單的問題,所以我可以遍歷這些對象並確定該人是否被選中。有關如何去做這件事的任何提示?提前致謝。

回答

0

我想你已經有了答案:

這似乎是常見的解決方案,以 這是爲了讓在 每個Person對象爲選定的屬性,但不是 真的一個很好的選擇我。 Person對象在整個 應用程序中使用,並且看起來非常不清潔 有一個Selected屬性,其中 真的不是Person 類的問題。

你的「Person對象」的目的是爲一個實體(Person)保存狀態。在這種情況下,'selected'是一個完全有效的值,因爲它涉及到與你的應用相關的那個人的'狀態'。

我可以想辦法做到這一點;但它們都增加了我覺得在這種情況下不必要的複雜性。

+0

我不同意。我認爲'Selected'更像是一個UI關注點,而不是一個'Person'對象的狀態(至少我需要如何使用它)。如果我需要一個屏幕來顯示兩個DataGrid,每個DataGrid都填充了相同的人員列表,但是由於不同的原因選擇?一個網格的「Selected」與另一個網格不一樣。 – Ocelot20 2011-06-12 01:54:50

+0

「selected」是對象的UI狀態的一部分,我仍然認爲將該值存儲爲實際的「UI-Persistent」對象的一部分是完全可以接受的。如果我有多個網格使用相同的數據用於不同的目的,我會使用多個屬性。 grid1Selected和grid2Selected。這種方法對我來說似乎很簡單。我想你可以在某種方法中使用Object Mediator來維護這些值;但對我來說似乎過度。 – JeffryHouser 2011-06-12 02:30:57

+0

這是一個分離問題的問題。對象本身並不需要知道它是否被選中,只有UI纔會被選中。鑑於此業務對象在很多地方都有使用,如果使用它的每個UI組件都聲明它在業務邏輯域中擁有自己的屬性,它將非常快速地變得非常不便。這是一個滑坡,導致像「Person.Width」這樣的事物。當然這很容易做到,但我希望能有一個乾淨的替代方案,遵循良好的編碼習慣。 – Ocelot20 2011-06-12 02:43:03