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);
       }
    }
    
  • 相关阅读:
    函数之返回值
    函数之初识函数
    三元运算符
    枚举enumerate
    模块
    迭代器
    斐波那契
    leetcode155 最小栈
    leetcode94 二叉树的中序遍历
    leetcode20 有效的括号
  • 原文地址:https://www.cnblogs.com/qouoww/p/15797026.html
Copyright © 2011-2022 走看看