http://drwpf.com/blog/2007/10/15/itemscontrol-a-is-for-abundance/
这是上文章的读书笔记,读该系列的文章,对于理解Visual Tree, Data Template, Style, Template, Layout等概念会非常有帮助。强烈建议你细读该系列文章原文。
http://drwpf.com/blog/2007/10/15/itemscontrol-a-is-for-abundance/
这是上文章的读书笔记
什么是ItemsControl?
顾名思义,ItemsControl是能容纳一组Items的Control.
例如ListBox, ComboBox, ConextMenu, ListView, ToolBar, TabControl,TreeView等等都是Items Control
所有这些控件都是从ItemsControl类派生,实现了一些额外的功能,例如ListBox实现了选择功能。
Panel和ItemsControl
Panel是不是ItemsControl? 不是。因为Panel根本不是一种Control,Panel不是从Control类派生的,虽然Panel也有自己的Child Collection,但是Panel的主要作用是对自己的Children作Layout,说白了就是怎么样排布自己的所有的 Child。而且Panel也不能像ItemsControl一样可以重新template, template是所有WPF控件的基本特性之一。
Panel的child必须是UI Element,而ItemsControl的child则可以是任意的CLR object.