Silverlight 何时更新主/明细UI的各个部分

Silverlight 何时更新主/明细UI的各个部分,silverlight,architecture,Silverlight,Architecture,我有一个UI,其中包含项目列表和所选项目的详细信息(典型的主/详细场景)。在我的例子中,这是一个Silverlight应用程序,但这个问题可能适用于其他编程模型。当应用程序启动时,UI的列表部分通过WCF(我控制)从远程数据源(在我的例子中是SQL Server)填充。然后,用户可以在列表中选择各种条目,查看所选条目的详细信息,添加新条目并编辑当前选择。用户有一个保存按钮来更新基础数据源。这是一个多用户环境。以下是我的问题: 1) 当应用程序启动时,我应该获取列表中的所有实体及其详细信息,还是在

我有一个UI,其中包含项目列表和所选项目的详细信息(典型的主/详细场景)。在我的例子中,这是一个Silverlight应用程序,但这个问题可能适用于其他编程模型。当应用程序启动时,UI的列表部分通过WCF(我控制)从远程数据源(在我的例子中是SQL Server)填充。然后,用户可以在列表中选择各种条目,查看所选条目的详细信息,添加新条目并编辑当前选择。用户有一个保存按钮来更新基础数据源。这是一个多用户环境。以下是我的问题:

1) 当应用程序启动时,我应该获取列表中的所有实体及其详细信息,还是在用户选择条目时从服务获取详细信息

2) 何时从服务更新列表?在编辑或添加之后?当前,当创建或更新完成时,我会返回更新的条目,并使用返回的数据更新UI,作为并发检查的一部分。通过这种方式,列表可能会过时,它不会显示其他用户可能创建的条目

3) 我是否应该始终提供一个刷新按钮,以允许用户手动刷新列表

如果我什么都不清楚,请告诉我

  • 这实际上取决于你的数据列表有多重。如果在一个页面上显示的项目不超过30-40个,我会将完整的实体放到列表中,然后在详细信息视图中显示它们。当然,如果您的实体本身数据量很大,有很多属性、嵌套列表等,您可能需要重新考虑这一点

  • 就我个人而言,我会在任何更新/添加/删除操作后立即更新我的数据列表,这正是您提到的原因;获取其他用户可能已添加/更新/删除的项目

  • 当然,刷新按钮很好,尤其是在没有搜索功能的情况下。如果你有搜索功能,那就和刷新按钮差不多。用户只需重复搜索即可刷新列表


  • (关于问题1)另一方面,如果你在列表中显示大量的项目,比如几百个,我会走另一条路,构建一个仅用于列表的较小实体。然后,当用户想要查看详细信息时,只需从服务获取完整实体。谢谢您的回答。这给了我一个开始的地方。我认为这将是一个共同的挑战,更多的开发人员将分享他们的见解。有人在网上提到过这个问题吗?我想如果你把这个问题也标上“WPF”,你可能会得到更多的答案。WPF比Silverlight存在的时间更长,因此人们有更多的时间来学习和开发最佳实践。你的问题适用于这两种技术。