zoukankan      html  css  js  c++  java
  • 轻量级MVVM框架Stylet介绍:(6) WindowManager

    在传统的View-frist方式中,如果想要显示了一个新的Window或Dialog,需要创建一个View的实例,并且调用.Show()或.ShowDialog()方法。

    在ViewModel-first方式中,不能直接与Views交互,WindowManager解决了这个问题,只需要调用IWindowManager.ShowWindow(someViewModel)就可以调用ViewModel,发现其View,实例化并显示。

    class SomeViewModel
    {
       private IWindowManager windowManager;
       public SomeViewModel(IWindowManager windowManager)
       {
          this.windowManager = windowManager;
       }
     
       public void ShowAWindow()
       {
          var viewModel = new OtherViewModel();
          this.windowManager.ShowWindow(viewModel);
       }
     
       public void ShowADialog()
       {
          var viewModel = new OtherViewModel();
          bool? result = this.windowManager.ShowDialog(viewModel);
          // result holds the return value of Window.ShowDialog()
          if (result.GetValueOrDefault(true))
          {
             // DialogResult was set to true
          }
       }
    }
    

    很优雅也很简单!此外,引入IWindowMmanager使得测试更容易。

    要关闭Window或Dialog,使用Screen.RequestClose,如下所示:

    class ViewModelDisplayedAsWindow
    {
       // Called by pressing the 'close' button
       public void Close()
       {
          this.RequestClose();
       }
    }
     
    class ViewModelDisplayedAsDialog
    {
       // Called by pressing the 'OK' button
       public void CloseWithSuccess()
       {
          this.RequestClose(true);
       }
    }
    
  • 相关阅读:
    NOP源码分析六--实体、数据的分层与处理。
    NOP源码分析七---继续
    NOP源码分析 八---set的存储
    Nop 源码分析四 任务系统
    NOP源码分析五,文件位置等详细内容,感冒真难受,嗓子痒又疼。。
    1
    mobx
    ts随笔
    13.vue-vuex
    13.vue-axios
  • 原文地址:https://www.cnblogs.com/qouoww/p/15797026.html
Copyright © 2011-2022 走看看