我有一个MVVM(Prism)应用程序,我需要实现母版详细信息屏幕,而母版是 ListView ,并且其旁边会显示详细信息。只读似乎很容易(还没有完成,但是我对WPF绑定(bind)有所了解),但是编辑/添加使我感到困惑。

我如何做到这一点,以便在保存详细信息之前不更新母版?
我如何做到这一点,以使您在编辑/添加模式下无法更改母版的当前选择?

我一直在搜索很多内容,但没有发现任何此类示例。

谢谢。

PS:此 View 是大屏幕上的 subview 。这就是为什么我希望同时掌握细节和细节。

最佳答案

您当然可以做到这一点,尽管我认为这样的UI设计无法充分利用WPF的全部功能。在将数据保存到SQL Server(或任何位置)之前,旧的WinForms UI通常不会更新大多数应用程序,因为它们没有真正的业务对象和功能强大的绑定(bind)系统(如WPF)。尝试在WPF中复制WinForms限制对我来说似乎是向后退了一步。为什么不在用户界面(包括主 View )中可见的位置显示最新数据?此外,为什么不让用户在保存之前编辑多个项目,例如在主 View 中用动画标记标记任何已编辑但未保存的项目?将这些与广义撤消结合起来,您将获得更好的设计和更直观的用户体验。

但是,如果您的业务需求使其绝对必要,请按以下步骤操作:

防止对数据的更改在明细之外可见,直到保存为止

进入“编辑/添加模式”后,创建数据对象的副本,并将详细 View 的DataContext设置为副本,而不是事件对象。数据“保存”后,将数据从卷影副本复制回事件对象,然后将详细信息 View 的DataContext放回原处。

防止在编辑/添加模式下更改主控台的当前选择

两种可能性:

  • 在编辑/添加模式下,更改主 View 以禁止进行鼠标 HitTest 或键盘焦点
  • 当编辑/添加模式开始时,捕获“当前选择”,然后添加一个监视“当前选择”更改的事件处理程序,并立即将选择更改回原来的状态。当编辑/添加模式结束时,删除处理程序。可以使用lambda表达式并使用局部变量的闭包来方便地编码此处理程序,以存储当前选择。
  • 关于c# - 如何在MVVM下的同一屏幕上实现CRUD主详细信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2249751/

    10-17 02:30