这是一个关于用户界面设计和编程模式的一般性问题,尽管我的问题来自于我正在开发的一个WPF应用程序。
当数据模型是分层的,并且层次结构超过2层时,什么是干净、优雅的模式来呈现数据驱动的用户界面?所谓最干净,我的意思是一种只需要很少的重复代码(而不是为每种数据模型类型编写表单),并且要求很少的单调乏味的方法。例如,它可能依赖于反射。我想这就是为什么我们有嵌套的数据网格。您可以在行详细信息模板中嵌套子对象。几乎所有的LOB应用程序都依赖于分层数据,所以一定有人已经解决了这个问题。
但这样做的问题是,如果主网格有许多不同的子细节网格怎么办?用户界面可以看起来杂乱的细节网格,嵌套在主网格中,并堆叠在彼此的顶部。
我的一些想法可能是尝试一个选项卡控件,嵌套在主网格中。另一种方法是在新的视图中打开一个新的数据网格,并不嵌套网格,但是再次为每个网格创建一个新的视图似乎是我从一开始就试图避免的繁琐工作。
除了逐个编码每个视图(和视图模型)之外,有没有一种更干净的方法来在分层数据模型上构建"text boxes over data“LOB应用程序?
发布于 2011-07-09 08:18:19
从根本上说,这是一个关于如何表示树的问题。在这个问题上没有很多好的共识;这是一个棘手的问题。当然,嵌套数据网格的方法是有效的,但当您将其描述为潜在的混乱时,您就一针见血了。
在某种程度上,这个问题的答案与您在给定级别进行交互时需要多少关于树的其余部分的信息有关。当你在处理两层下的树叶时,你真的需要知道树的根,以及根的所有子吗?当然有这样做的用例,在这些情况下,选择一个让您看到所有子对象的表示结构是有意义的(就像在嵌套网格方法中一样)。在其他情况下,您不需要知道太多关于树中较高级别的信息;在这些情况下,将较低级别数据的表示隔离到它自己的表示区域(页面)中是非常有意义的。
有各种各样不同的方法来解决这个问题。你看到prezi了吗?它非常令人印象深刻,令人印象深刻的部分原因是数据有一种“位置”的感觉;它使用人类自己的空间感来帮助理解复杂的数据和层次结构;缩放实际上锁定在空间方向的感觉上(有时是错位的)。
就您的实际问题而言,请考虑REST,特别是HATEOAS期望。实际上,可以考虑独立于表示对数据进行建模,然后让表示成为相对较薄的层,而不是密集的视图模型。可能有一些东西需要调整,但最重要的是,如果整体视图模型需要调整,您可以返回并相对容易地修改它。此外,数据模型倾向于暗示对给定数据集有意义的特定结构;实际上,这是一个从数据中识别结构并找到最适合该结构的显示模型的问题。通过不将大量工作提交到严格的视图模型,您可以根据需要进行更改。敏捷的UI设计,大致如此。
这些东西是非常主观的,它确实取决于您的组织和您的需求;没有一个好的解决方案。祝你好运;至少你问的问题是对的!
https://stackoverflow.com/questions/6631695
复制相似问题