我有一个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