如何从不同的视图请求权限?

时间:2013-12-04 11:44:24

标签: mvvm caliburn.micro

我有一个包含三个视图的项目:一个MainView,其中包含另外两个视图。 这两个子视图包含对象列表(让我们称之为视图A和B),它们在很大程度上是独立的。但有时对象之间存在连接,这些连接包含在列表中。 从时间的黎明开始,只有来自列表A的对象“知道”关于类型B的对象,类型B不知道A可能存在。 这是预期的行为,很难改变。但是知道我有一个问题:可以删除列表B中的对象,但是当它被类型A的对象引用时,这不是一个好主意。 我想做的是以某种方式“询问”视图A,如果它的某些对象与要删除的对象有连接。如果是这样,我会通知用户。 但是我该如何建模呢?视图A和视图B彼此不了解。通过MainView将是“错误的”。我会使用一个事件,但如果我正确理解Caliburn,我只能发送一个事件,但无法收到反馈。 任何想法?

1 个答案:

答案 0 :(得分:1)

EventAggregator看起来像一个解决方案。

  1. 您的用户选择一个对象并点击删除。
  2. 您在View B中的点击处理程序发送一个message1,其中包含要删除的对象的ID(或您用来识别的任何内容)。
  3. 查看A收到message1并发送带有检查结果的message2(删除/不删除)
  4. 视图B接收消息2并删除对象或警告用户。
  5. message1和message2是完全独立的,不同的类型。

    enter image description here