代码之家  ›  专栏  ›  技术社区  ›  Benni To

在执行视图模型中的方法之后,如何使视图中的方法执行?

  •  0
  • Benni To  · 技术社区  · 7 年前
    // view model
    public void CreateChildViewModel()
    {
     //do something
    }
    //view
    _fluent.WithCommand(x => x.CreateChildViewModel()).After(PreviewObject);
    private void PreviewObject()
    {
     //do somthing
     // this method is not call because method CreateChildViewModel is not bind with any control 
     //in view but it's was called automatically when child view-model is created
     }
    

    那么,在方法CreateChildViewModel完成后,如何调用PreviewObject方法呢?

    1 回复  |  直到 7 年前
        1
  •  1
  •   TheGeneral    7 年前

    首先

    这个坏了 MVVM 图案

    无论如何,您需要保留对 View 或使用 Delegate Action 取决于谁负责创建和最初显示它。然后通过传递 Reference 行动 代表 到视图模型。

    然而

    我会认真考虑你的设计,并决定 ViewModel 确实需要访问背后的视图代码(因为这似乎有点不寻常),并尝试将此职责推回给 视图模型 .

    最后一点

    如果这确实是您需要做的,那么它似乎是解耦消息传递或事件聚合器系统的一个很好的候选者,就像在各种MVVM框架(如MVVMLight)中发现的那样

    其他资源

    MVVM Light Messenger

    Event Aggregator