代码改变世界

WPF中的模板之二

2008-06-25 10:14  DQ  阅读(344)  评论(0)    收藏  举报
    接上面所叙述的,对于任何派生自ContentControl的控件,都可以使用ContentTemplate Property来定义一个自定义的layout。除了ContentControl,ItemControl的派生类型也占有相当大的比例。ItemsControl系列的类型都是用来显示多个对象的,这些类型包括MenuItem、TreeViewItem、ListBox、ComboBox、ListView。
    ItemsControl定义了另一个和模板相关的property,名为ItemsPanel,这是到目前为止最简单的模板类型。此property的类型是ItemsPanelTemplate,其整个视觉树内只能有一个element,此element必须派生自Panel。对这些类型的大部分来说,模板是一个StackPanel。对于Menu来说,是WrapPanel。对于StatusBar来说是DockPanel。对于ListBox和ListView来说,是VirtualizingStackPanel。
    为了单个条目的显示,ItemsControl定义了一个property,名为ItemTemplate,类型是DataTemplate。你可以使用此property,作法类似使用ContentControl所定义的ContentTemplate property,不过ItemTemplate property负责管理ListBox内所有条目的外观,且它会引用ListBox内所存储的数据的property。