您现在的位置: IT专家网 > WinSystem子站 > 技巧
让人迷恋 Avalon 数据绑定
作者: Chris Sells, 出处:微软, 责任编辑: 韩博颖,
2008-05-26 08:38
讨论 Avalon,并且将数据绑定引入其基于 Longhorn 的 Solitaire 应用程序。
| partial class Window1 : Window { ArrayListDataCollection persons = new ArrayListDataCollection(); void Window1_Loaded(object sender, EventArgs e) { persons.Add(new Person("John", 10)); persons.Add(new Person("Tom", 8)); this.DataContext = this.persons; ... } ... } |
令人鼓舞的是,尽管 Avalon 数据绑定不像 Windows 窗体那样支持 Changed 约定,但与 Windows 窗体数据绑定接口 ICollectionChange 等效的 IBindingList 接口受到 Avalon 的支持。还有一个额外的好处 — 因为 IBindingList 提供了 ICollectionChange 和 IPropertyChange 的功能,所以任何目前接通 Windows 窗体数据绑定的数据源对于 Avalon 数据绑定也将完全有效(这包括 ADO.NET 中的 DataTable 对象等)。
我们所处的位置
我从讨论游戏和分数以及它们如何将我的思想导向 Avalon 中的数据绑定开始。我们一开始讨论了绑定到对象的基础知识,以及如何使用 IPropertyChange 在对象和文本框控件之间实现双向更改通知。我向您介绍了简洁的、扩展的绑定语法,并且随后继续讨论了如何绑定到数据列表,如何设置列表项的样式以及如何使用 ICollectionChange 跟踪双向列表更改。
正如文中所表明的那样,对于 Avalon 中的数据绑定有大量相关内容。在下一期中,我将讨论其他数据绑定主题(如用于高级数据样式设置的转换器和样式选择器、自定义视图和筛选器),并且插入一些拖放操作来推进我的 solitaire 实现,如图 6 所示。

图 6. 我的 Solitaire 应用程序被更新为使用数据绑定
图 6 中显示的所有数据都是使用数据绑定实现的,包括全部七堆纸牌和分数。而且正如 Mark 所说的,如果我用其他任何方式实现它,那我一定会发疯。
- 本文关键词:

