【问题标题】:Caliburn.micro open window by clicking buttonCaliburn.micro 通过单击按钮打开窗口
【发布时间】:2018-04-22 19:50:01
【问题描述】:

我有两个视图(窗口)及其关联的视图模型。第一个,ShellView 和第二个,CreatePersonView。我想要的是,当我单击 ShellView 中的按钮时,它会在新窗口中打开 CreatePersonView。当这个窗口关闭时,父级应该执行一些任务。

感谢您的帮助。

【问题讨论】:

    标签: c# wpf mvvm caliburn.micro


    【解决方案1】:

    您可以使用 EventAggregator 和窗口管理器实现此目的

    第 1 步: 单击按钮时调用 CreatePerson 窗口。

    public void PersonClick() => _windowManager.ShowDialog(_createPersonVM);
    

    WindowManager 应该在 ShellViewModel 的构造函数中导入。

    第 2 步:当 CreatePersonView 关闭时继续在 Shell 中执行任务。您需要为此使用事件聚合器。

     public void CloseEvent() => _eventAggregator.PublishOnUIThread(new CloseMsg() {Message = "Hey closed"});
    

    ShellViewModel 需要订阅 CloseMsg (IHandle) 的 eventtaggregator。

    这将帮助您实现目标。

    如果您需要进一步说明,请告诉我。可以分享完整代码。

    【讨论】:

    • 能否解释一下如何在构造函数中导入WindowManager?
    • 嗨,您可以在构造函数中执行以下操作。 [ImportingConstructor] public ShellViewModel(IWindowManager windowManager) { _windowManager = windowManager; }
    • @Anu Viswan:您能否展示给定示例的完整代码?我也面临同样的问题,并且对如何完成这个“钩子”缺乏了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2015-10-31
    • 2021-03-28
    相关资源
    最近更新 更多