容器和内容控件(ContentControl)组成。布局容器是指Grid、StackPanel等继承自Panel,可以拥有多个子元素的类。与此相对,ContentControl则只能包含单个子元素。
在UWP中,Button、CheckBox、ScrollViewer、Frame、ToolTip等都继承自ContentControl,其它控件则不是在ContentTemplate中使用ContentControl,就是被ContentControl使用,可以说ContentControl是UWP中最重要的控件。
ContentControl的定义并不复杂,它主要包含这四个属性:Content,ContentTemplate,ContentTemplateSelector,ContentTransitions。
1. Content
Content支持任何类型,它的值即ContentControl要显示的对象。可以将Content的类型大致分为两大类:
未继承自UIElement的类型: ContentControl调用这些类的ToString()方法获取文本然后显示。
继承自UIElement的类型: ContentControl直接将它显示在UI上。
<StackPanel> <ContentControl> <AdaptiveTrigger /> </ContentControl> <ContentControl> <Rectangle Height="50" Fill="Red" /> </ContentControl></StackPanel>
2. ContentTemplate
要将ContentControl的内容按自己的想法显示出来,可以使用ContentTemplate属性public DataTemplate ContentTemplate { get; set; })
。DataTemplate是定义如何显示绑定的数据对象的XAML标记。DataTemplate定义的XAML块中元素的DataConte