设计时支持:如何获取环境数据
目前的软件,对于人机交互得要求越来越高,微软在设计器中提供的控件已经无法满足日常开发的需要。为了应对这种局面,通常的做法是购买第三方或者自己开发。此处我们不谈论这两种做法的优点和缺点。但是在日常开发中,我们肯定离不开开发一些小控件,如果具备微软常用空间的特性和功能,以便降低使用者的洪沟?更好的集成到Visual Studio 中?
例如下图所示
拖放一个Button到窗体上,鼠标右键点击,我们会看到“重置”菜单,当用户输入了某个值以后,发现这不是他想要的,这是可以使用重值功能恢复到初始状态。这是AmbientValueAttribute的功能表现。
MSDN上有句话介绍了此特性标记的主要功能和使用方式:
“通常,可视化设计器使用 AmbientValueAttribute 属性来决定为属性永久保存的值。这通常是一个使属性从另一个源获取其值的值。周围值的一个示例是
1 [AmbientValue("NoName")]
2 public string Title {
3 get {
4 if (_title == "NoName" && Parent != null) {
5 Form f = Parent as Form;
6 _title = f.Text;
7 }
8 return _title;
9 }
10 set { _title = value; }
11 }
2 public string Title {
3 get {
4 if (_title == "NoName" && Parent != null) {
5 Form f = Parent as Form;
6 _title = f.Text;
7 }
8 return _title;
9 }
10 set { _title = value; }
11 }
以上代码当重置操作时,控件将获得承载它的窗体容器,使用Form.Text的值填充Title属性。它的使用并不复杂,既可以标识在类上也可以标识属性上。小小的功能,可以改善用户体验,何乐而不为呢?