Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在WPF中维护业务对象列表的最佳方法_.net_Wpf_Wcf - Fatal编程技术网

.net 在WPF中维护业务对象列表的最佳方法

.net 在WPF中维护业务对象列表的最佳方法,.net,wpf,wcf,.net,Wpf,Wcf,所以这个问题不是技术性的,而是概念性的 我有一些asp.net的经验,但刚刚开始使用WPF和WCF服务(在winforms中没有任何经验)。假设我需要维护这个业务对象列表。我正在考虑两种解决方案: 我将网格绑定到我的对象列表,并允许用户在没有验证错误的情况下,在用户更改网格中的聚焦线时编辑提交对象的对象。如果存在验证错误,用户无法更改焦点行 允许用户自由编辑对象列表,并通过“保存”按钮对这些对象进行批量更新,从而提交整个集合。只有在网格中没有发生验证错误时,才可以提交。验证问题在网格上显示,用户

所以这个问题不是技术性的,而是概念性的

我有一些asp.net的经验,但刚刚开始使用WPF和WCF服务(在winforms中没有任何经验)。假设我需要维护这个业务对象列表。我正在考虑两种解决方案:

  • 我将网格绑定到我的对象列表,并允许用户在没有验证错误的情况下,在用户更改网格中的聚焦线时编辑提交对象的对象。如果存在验证错误,用户无法更改焦点行

  • 允许用户自由编辑对象列表,并通过“保存”按钮对这些对象进行批量更新,从而提交整个集合。只有在网格中没有发生验证错误时,才可以提交。验证问题在网格上显示,用户可以自由地更改焦点行

  • 这样做的标准(最佳)方式是什么?欢迎任何其他建议

    提前谢谢


    PS:请注意,数据源不是应用程序的本地数据源,WCF服务托管在web服务器中。

    这确实取决于很多事情,但由于您提到了WCF服务,我将假设您有一个数据源,该数据源通过您的服务接口向多个客户端公开(对吗?)。在这种情况下,您可能希望最小化网络流量,因此我建议使用批更新方法。否则,用户所做的每一项更改都会有服务调用

    如果用户有本地数据源,您可能需要考虑第一种方法,因为这会减少数据丢失的机会,因为每个更改都提交到数据源。 此外,您可能希望了解WPF datagrid内置的验证功能:


    这确实取决于很多事情,但既然您提到了WCF服务,我将假设您有一个数据源,它通过您的服务接口向多个客户端公开(对吗?)。在这种情况下,您可能希望最小化网络流量,因此我建议使用批更新方法。否则,用户所做的每一项更改都会有服务调用

    如果用户有本地数据源,您可能需要考虑第一种方法,因为这会减少数据丢失的机会,因为每个更改都提交到数据源。 此外,您可能希望了解WPF datagrid内置的验证功能:


    我不会说这里有具体的“标准”。您使用的方法在很大程度上取决于许多因素

  • 用户群是什么?如果逐个记录保存有助于减少冲突的可能性,那么并发编辑的可能性是否很大
  • 从用户的角度来看,什么是最有效的,他们是否需要“批量编辑”,或者在继续之前让每一个都正确对他们来说很重要
  • 丢失的更改怎么办?如果进行批量编辑,如果用户的计算机出现故障,或者有什么东西导致应用程序死亡,您该怎么办

  • 我不会说这里有具体的“标准”。您使用的方法在很大程度上取决于许多因素

  • 用户群是什么?如果逐个记录保存有助于减少冲突的可能性,那么并发编辑的可能性是否很大
  • 从用户的角度来看,什么是最有效的,他们是否需要“批量编辑”,或者在继续之前让每一个都正确对他们来说很重要
  • 丢失的更改怎么办?如果进行批量编辑,如果用户的计算机出现故障,或者有什么东西导致应用程序死亡,您该怎么办

  • 我认为,如果你实现了一个网格的原型,在你修复了当前行中的验证错误之前,你不会把注意力集中到一个新行,你会惊讶地发现使用它是多么令人难以置信的恼火


    还有第三种方法您没有提到,即在验证时更新,并允许用户将行保留在无效状态。只要UI非常清楚某一行是否有效,对于用户的编辑是否已提交到数据源,不应存在任何混淆。

    我认为,如果您实现了一个网格原型,在修复当前行中的验证错误之前,不允许您将注意力集中到新行,那么您会惊讶地发现,使用它会令人难以置信地恼火是的


    还有第三种方法您没有提到,即在验证时更新,并允许用户将行保留在无效状态。只要用户界面非常清楚某一行是否有效,用户就不会对其编辑是否已提交到数据源感到困惑。

    数据源不是本地的。问题已被编辑。谢谢,数据源不是本地的。问题已被编辑。谢谢关于并发性的观点…虽然这一点应用程序不会有那个问题,因为它是一个受限区域。第三点也不错。谢谢关于并发性的观点…虽然这一点应用程序不会有那个问题,因为它是一个受限区域。第三点也不错。谢谢