zoukankan      html  css  js  c++  java
  • Prism学习(7)Commands

    上一章中,对Shell, Region, View有了一个初步的了解。我们可以通过这些类向指定的用户控件加载Shell中,但是目前,还无法实现模块之间的交互。接下来开始开始逐步探索这方面的应用。

    还是继续上一章中的例程接着往下改。在Prism中,允许在UI中绑定Command对象来实现MVVM模式。步聚如下: 

    1. 在InterfaceProject模块中的ITextServices中修改代码,如下:

    1     public interface ITextService
    2     {
    3         string GetText();
    4         void SetText(string newText);
    5 
    6         event EventHandler TextChanged;
    7     }

    2.在ModuleAProject项目的Services文件夹下,修改TextService.cs中的代码,如下:

     1     public class TextService:ITextService
     2     {
     3         public TextService()
     4         {
     5             text = "Hello Silverlight!";
     6         }
     7         public string GetText()
     8         {
     9             return text;
    10         }
    11         public void SetText(string newText)
    12         {
    13             this.text = newText;
    14 
    15             if (TextChanged != null)
    16             {
    17                 TextChanged(this, EventArgs.Empty);
    18             }
    19         }
    20 
    21         string text;
    22         public event EventHandler TextChanged;
    23     }

    3, 通过以上的修改,完成模块对外接口及其实现。接下来, 需要在UI上加一些操作,用来与模块进行交互。在ModuleAViewOne.xaml中绑定好后,在ModuleAViewOneViewModel中更改代码如下: 

     1         public ModuleAViewOneViewModel(ITextService textService)
     2         {
     3             this.textService = textService;
     4 
     5             this.textService.TextChanged += (s, e) => {
     6                 if (PropertyChanged != null)
     7                 {
     8                     PropertyChanged(thisnew PropertyChangedEventArgs("Text"));
     9                 }
    10             };
    11         }
    12         public string Text
    13         {
    14             get { return textService.GetText(); }
    15         }
    16         public ICommand OnUpdateText
    17         {
    18             get
    19             {
    20                 if (onUpdateText == null)
    21                 {
    22                     onUpdateText = new DelegateCommand<string>(
    23                         OnTextChanged);
    24                 }
    25                 return onUpdateText;
    26             }
    27         }
    28 
    29         private ICommand onUpdateText;
    30         ITextService textService;
    31 
    32         void OnTextChanged(string newText)
    33         {
    34             textService.SetText(newText);
    35         }
    36 
    37         public event PropertyChangedEventHandler PropertyChanged;
    38     }

    程序执行通过。明天继续。 代码点击这里下载!

  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/prolove2/p/2435271.html
Copyright © 2011-2022 走看看