我有一個Actionscript類,我們將打電話給Person
來讓示例變得簡單。我想要有一個DataGrid
填充Person
對象,其中有列顯示名稱,生日等東西。所有這些都很好,很簡單,但我還想添加一個複選框列以選擇DataGrid
中的某些人。示例用例如下:Flex CheckBox ItemRenderer不綁定到對象?
- 顯示所有人。
- 用戶選中每個人旁邊的框,表示他們希望對這些選擇採取某些操作。
- 當用戶單擊按鈕時,會對用戶選擇採取某些操作。
這似乎是常見的解決方案是讓每個Person
對象上Selected
財產,但這並不是真的對我來說是很好的選擇。 Person
對象在整個應用程序中使用,並且看起來非常不清楚Selected
屬性,這實際上不是Person
類的問題。
我喜歡像Person
這樣的硬類的類型安全性,但我不知道如何解決這個看似簡單的問題,所以我可以遍歷這些對象並確定該人是否被選中。有關如何去做這件事的任何提示?提前致謝。
我不同意。我認爲'Selected'更像是一個UI關注點,而不是一個'Person'對象的狀態(至少我需要如何使用它)。如果我需要一個屏幕來顯示兩個DataGrid,每個DataGrid都填充了相同的人員列表,但是由於不同的原因選擇?一個網格的「Selected」與另一個網格不一樣。 – Ocelot20 2011-06-12 01:54:50
「selected」是對象的UI狀態的一部分,我仍然認爲將該值存儲爲實際的「UI-Persistent」對象的一部分是完全可以接受的。如果我有多個網格使用相同的數據用於不同的目的,我會使用多個屬性。 grid1Selected和grid2Selected。這種方法對我來說似乎很簡單。我想你可以在某種方法中使用Object Mediator來維護這些值;但對我來說似乎過度。 – JeffryHouser 2011-06-12 02:30:57
這是一個分離問題的問題。對象本身並不需要知道它是否被選中,只有UI纔會被選中。鑑於此業務對象在很多地方都有使用,如果使用它的每個UI組件都聲明它在業務邏輯域中擁有自己的屬性,它將非常快速地變得非常不便。這是一個滑坡,導致像「Person.Width」這樣的事物。當然這很容易做到,但我希望能有一個乾淨的替代方案,遵循良好的編碼習慣。 – Ocelot20 2011-06-12 02:43:03