感谢你的回答。现在我重新阅读了我的消息,我发现它相当模糊。我有一个编辑对象的屏幕,其中包含其他子对象的多个列表。我已将它们实现为选项卡控件中的不同选项卡。其中一个选项卡可以编辑评论,因此我想显示评论列表,并在列表旁边显示当前选择的编辑面板。然后,用户可以使用添加、编辑或删除按钮来更新列表。我想以纯粹的 MVVM 方式做到这一点。
\n\n我想出了以下设计,它似乎可以用最少的技巧来工作。
\n\nView 包含一个子对象列表,就像绑定到 ViewModel 中可观察集合的 ListView 一样。我包含了一个子对象缓冲区 \xe2\x80\x93,它用于缓冲更改,直到它们准备好保存回列表(或丢弃)。
\n\nView 还包括一个绑定到 ViewModel 中的缓冲区对象的编辑面板。每当列表视图\xe2\x80\x99s当前选择使用深层复制发生变化时,缓冲区就会更新。我尝试在 Selecteditem 属性上使用数据绑定,但从未调用该集合,因此添加了一个小的代码隐藏方法,以在选择更改时强制更新该属性。
\n\n列表视图和编辑视图是互斥的。理论上,您可以隐藏禁用的屏幕,也许可以使用翻转屏幕。作为一般模式,我的应用程序最好同时显示两者,因为编辑面板可能会显示列表视图中未显示的额外信息。通过将 IsEnabled 绑定到 ViewModel 属性(如 IsEditCommentMode)来控制启用哪个面板的选择。
\n\n必须添加管理列表的命令,这些命令是新建、编辑和删除。请注意,“添加”和“编辑”将设置缓冲区,然后将 IsEditCommentMode 设置为 true。这些列表管理命令仅在 IsEditCommentMode 为 false 时可用。\n编辑面板实现“保存”和“取消”命令,它们仅在 IsEditCommentMode 为 true 时启用。当执行 Save 时,它应该从缓冲区复制到列表(添加或更新)并触发更改通知。最后,应该将 IsEditCommentMode 设置为 false。
\n\n这一切都运行良好,并且似乎没有违反任何 MVVM 原则(以我谦虚但经常有缺陷的观点)。
\n