WPF模版主要分为俩大类:
ControlTemplate: 控件的外观,也就是控件是什么样子
DataTemplate: 是数据内容的表现,一条数据显示成什么样子
1. 数据模版常用的地方有以下几处:
- ContentControl的ContentTemplate属性。
- ItemsControl的ItemTemplate属性。
- GridViewColumn的CellTemplate属性。
2. 示例
ItemsControl



ContentControl


3. DataTemplate除了可以作用在控件上,也可以作用再数据类型上
01 |
<Window x:Class="DeepXAML.MainWindow" |
04 |
xmlns:local="clr-namespace:DeepXAML" |
05 |
xmlns:sys="clr-namespace:System;assembly=mscorlib" |
06 |
xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib" |
07 |
Title="MainWindow" Height="250" Width="450"> |
09 |
<DataTemplate DataType="{x:Type local:Student}"> |
10 |
<StackPanel Orientation="Horizontal" > |
12 |
<Rectangle Fill="YellowGreen" Width="{Binding Path=Score}"/> |
13 |
<TextBlock Text="{Binding Path=Name}"></TextBlock> |
15 |
<TextBlock Text="{Binding Path=Score}" Margin="5"></TextBlock> |
18 |
<cl:ArrayList x:Key="allStudentsList"> |
19 |
<local:Student Name="Jack" Gender="True" Score="80"></local:Student> |
20 |
<local:Student Name="Tom" Gender="False" Score="40"></local:Student> |
21 |
<local:Student Name="Jack" Gender="True" Score="75"></local:Student> |
24 |
<StackPanel x:Name="stackPanel"> |
25 |
<ListBox ItemsSource="{StaticResource ResourceKey=allStudentsList}" FontSize="15"></ListBox> |
26 |
<TextBlock Margin="10">Below is combox</TextBlock> |
27 |
<ComboBox ItemsSource="{StaticResource ResourceKey=allStudentsList}" FontSize="15"></ComboBox> |

4. DataTemplate作用在XML元素上
01 |
<Window x:Class="DeepXAML.MainWindow" |
04 |
xmlns:local="clr-namespace:DeepXAML" |
05 |
xmlns:sys="clr-namespace:System;assembly=mscorlib" |
06 |
xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib" |
07 |
Title="MainWindow" Height="250" Width="450"> |
09 |
<DataTemplate DataType="Student"> |
10 |
<StackPanel Orientation="Horizontal" > |
12 |
<Rectangle Fill="YellowGreen" Width="{Binding XPath=@Score}"/> |
13 |
<TextBlock Text="{Binding XPath=@Name}"></TextBlock> |
15 |
<TextBlock Text="{Binding XPath=@Score}" Margin="5"></TextBlock> |
18 |
<XmlDataProvider x:Key="xmlDp" XPath="Students/Student"> |
21 |
<Student Name="Jack" Score="80"></Student> |
22 |
<Student Name="Tom" Score="40"></Student> |
23 |
<Student Name="David" Score="75"></Student> |
28 |
<StackPanel x:Name="stackPanel"> |
29 |
<ListBox ItemsSource="{Binding Source={StaticResource xmlDp}}" FontSize="15"></ListBox> |
30 |
<TextBlock Margin="10">Below is combox</TextBlock> |
31 |
<ComboBox ItemsSource="{Binding Source={StaticResource xmlDp}}" FontSize="15"></ComboBox> |
