命令MVVM(WPF) - 如何返回bool值?

时间:2015-09-11 05:59:47

标签: c# wpf mvvm

我有2个应用程序,比如app1& APP2 我将app2托管到app1。 我有1个工具栏,在app1上托管了app1视图和状态栏。 现在我在工具栏按钮上绑定命令,这些命令在app1视图中实现。 现在app1想知道是否执行了操作,所以app2需要通知app1执行此操作并更新状态栏, 但是如何使用命令返回bool值? 图解释场景 enter image description here

3 个答案:

答案 0 :(得分:3)

您可以使用anonymous pipenamed pipe 对于本地执行,建议使用 匿名管道 ,其中 命名管道 允许在计算机中进行跨计算机通信网络

您的执行顺序应如下所示:

  1. APP1创建管道的“服务器实例”
  2. APP1通过您的命令启动APP2
  3. APP2执行任务
  4. APP2通过匿名管道作为客户端
  5. 连接到APP1
  6. APP2通过管道将结果发送到APP1
  7. 请注意:

    • APP1应始终注意APP2可能 NOT 通过管道返回任何内容的事实。所以APP1在启动APP2后不应该处于不一致状态
    • APP1收到APP2的结果后,APP1应该关闭管道的服务器端

答案 1 :(得分:2)

一种可能的解决方案是定义一个具有Result属性的参数类,该属性将在执行代码中设置,然后在调用代码中检索,非常类似于事件的完成(之后)所有命令主要用作WPF UI设计中事件的替代方案。)

答案 2 :(得分:1)

我不确定这是否适合你。这是我在code project找到的东西。这个想法是你有一种icommand,它有一个额外的属性和一个事件。这个额外的属性是您的返回类型。在运行功能之前,请在命令中将侦听器附加到新事件,以便在功能完成后,您可以做出相应的响应。

另一个想法是做像prism或MVVMLight那样的事情。它们具有在系统周围传递事件的机制。 MVVMLight称他们为Event Aggregator。

我过去曾使用过这两种方法。事件聚合器在我看来很不错,因为它可以轻松解决其他通信问题。小心不要过多使用它。它当然可以成为一个拐杖。