第十二课通知界面变更接口——C#计算器编程教学
2016-05-04 15:56
337 查看
前面说了,这个接口微软的FrameWork库里的名称叫INotifyPropertyChanged,在System.ComponentModel名称空间里。前面也说过了,CaclString属性实现了这个接口,你们是否举一反三,Result属性也实现了这个接口呢?没有?那你的学习能力有问题。(哈)
凡是要和界面打交道的公有属性必须实现这个接口,这是我说过的界面和程序编写分离的编程模式的要求。
这里列出CaclString的定义代码,(前面不是列出来了吗?是的,但这还不是真实的代码哦)
可不要忘了,本程序支持键盘输入!这是为了它而编写的。
在这里你看到了isRun属性值的设置时机。想想看,有输入时当然还没有运行计算。
这里有一个问题,如何绕开set访问器代码?这涉及到后面部分功能键的代码。
答案是:不要CaclString=XXX,而是caclString=XXX,然后跟一句:
RaisePropertyChanged("CaclString");
所以要理解这一句代码的功能含义。它告诉界面或者调用它的对象,本属性值有变化,请重新调用它(的新值)。再看看它返回的是什么?不就是caclString么!
Cacl类接口定义还有一个公有属性,叫HaveMemory;我是如下定义的:
第十二课结语。灵活运用接口功能,编程思路广阔清晰,这是一种境界,这是编程能力的目标。
凡是要和界面打交道的公有属性必须实现这个接口,这是我说过的界面和程序编写分离的编程模式的要求。
这里列出CaclString的定义代码,(前面不是列出来了吗?是的,但这还不是真实的代码哦)
public string CaclString { get { return caclString; } set { if (caclString != value) { caclString = value; isRun = false; string digist = "1234567890."; while (caclString != "" && !digist.Contains(caclString.First())) { caclString = caclString.Remove(0, 1); } noStringAdded = caclString == ""; RaisePropertyChanged("CaclString"); } } }这个set访问器代码是什么意思呢?
可不要忘了,本程序支持键盘输入!这是为了它而编写的。
在这里你看到了isRun属性值的设置时机。想想看,有输入时当然还没有运行计算。
这里有一个问题,如何绕开set访问器代码?这涉及到后面部分功能键的代码。
答案是:不要CaclString=XXX,而是caclString=XXX,然后跟一句:
RaisePropertyChanged("CaclString");
所以要理解这一句代码的功能含义。它告诉界面或者调用它的对象,本属性值有变化,请重新调用它(的新值)。再看看它返回的是什么?不就是caclString么!
Cacl类接口定义还有一个公有属性,叫HaveMemory;我是如下定义的:
public bool HaveMemory { get { return memoryString != null; } }它是只读属性,没有在定义里实现通知界面变更接口,实现这个接口不能在get访问器中定义。所以每当memoryString值有变化,后面必须跟一句:
RaisePropertyChanged("HaveMemory");当然,你也可以这样定义memoryString:
private string MemoryString { get { return memoryString; } set { memoryString = value; RaisePropertyChanged("HaveMemory"); } } private string memoryString;以后不用每次编写那一句。
第十二课结语。灵活运用接口功能,编程思路广阔清晰,这是一种境界,这是编程能力的目标。
相关文章推荐
- 第十一课私有变量——C#计算器编程教学
- 第十课等于之调用关键调用——C#计算器编程教学
- C#虚函数virtual详解
- 第九课等于之关键调用——C#计算器编程教学
- 第八课等于之集合对象的操作——C#计算器编程教学
- C#基础知识六之委托(delegate、Action、Func、predicate)
- Chapter 2. C#语句---循环语句
- 第七课等于之算式还原——C#计算器编程教学
- .Net C#(类的继承/虚函数/抽象函数/密封类/静态类/抽象类)——学习笔记
- 第六课等于之对象相加——C#计算器编程教学
- C#学习:委托摘录 《自学系列》
- 第五课等于之解决思路——C#计算器编程教学
- Chapter 2 C#语句---选择语句
- 第四课输入时的细节处理——C#计算器编程教学
- 【C#设计模式-命令模式】
- C# vs2012中 -- 不可访问,因为它受保护级别限制
- /*C#:扩展方法*/ 《自学系列》
- C# 合并两个数组总结
- c# 解析和生成 DAE文件
- C# 点绕某点旋转某角度