UI框架设计:确定列表中预选项目的不同方法?

时间:2013-03-24 10:57:26

标签: c# design-patterns user-interface

我一直想知道的事情:如果我要实现某种类似UI小部件的列表(这里没有假设特定的目标平台,但我使用C#来说明),我可以看到三种方法来确定在我的列表中预先选择的条目。 看下面的存根。所有这三个实现都有一个委托,要求显示项目的实现,而不是直接传递项目。我们的想法是,只有在实际要显示UI元素时才会请求项目。

第一个实现有一个setter,允许定义预先选择的项目。

public class ListWidget<T>
{
  public Action<IList<T>> GetListItems;

  public SetPreselectedItem(T item)
  {
    this.preselectedItem = item;
  }
} 

或:

这遵循以下想法:列表小部件在某些时候询问实现 - 通过循环它知道的所有项目 - 是否应该预先选择项目。我在这里看到的优势:它可以进行多选。

public class ListWidget<T>
{
  public Action<IList<T>> GetListItems;

  public Action<bool> IsItemPreselected(T item);
} 

或:

这是在需要呈现其内容时询问预选项的实现。

public class ListWidget<T>
{
  public Action<IList<T>> GetListItems;

  public T GetPreselectedItem();
} 

如果我查看Apple的UIKit,他们会使用第一种方法:列表要求显示数据但是直接设置所选项目。 我在setter和最后一个版本中看到的问题:你可以设置任何值,即使该项目在列表中不存在。如果要设置的项目实际存在于列表中,则需要额外检查。 我已经在不同平台上看到了上述模式的所有变化,但我想知道是否有最好的方法?或者还有另一个版本的实现吗?

0 个答案:

没有答案