---恢复内容开始---
正如标题中的两个拼接的单词所说,DataTemplate就是数据显示的模板,而ControlTemplate是控件自身的模板。(个人理解,错误请指出,谢谢)
我们看这二者在两类不同的控件中如何使用:
一:ItemsControl
我们可以利用ControlTemplate来设置控件外表,用DataTemplate来填充控件内容。
<Page.Resources> <DataTemplate x:Key="dataTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Column="0" Text="{Binding Name}"></TextBlock> <TextBlock Grid.Column="1" Text="{Binding Age}"></TextBlock> <TextBlock Grid.Column="2" Text="{Binding Sex}"></TextBlock> </Grid> </DataTemplate> </Page.Resources> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <ListBox x:Name="itemsControl" Width="300" Height="400" ItemsSource="{Binding Mode=OneWay}" ItemTemplate="{StaticResource dataTemplate}"> <ListBox.Template> <ControlTemplate> <Grid > <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="auto"></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" FontSize="20" Text="姓名"></TextBlock> <TextBlock Grid.Row="0" Grid.Column="1" FontSize="20" Text="年龄"></TextBlock> <TextBlock Grid.Row="0" Grid.Column="2" FontSize="20" Text="性别"></TextBlock> <ItemsPresenter Grid.Row="1" Grid.ColumnSpan="3"> </ItemsPresenter> </Grid> </ControlTemplate> </ListBox.Template> </ListBox> <Button x:Name="button" Content="Button" HorizontalAlignment="Left" Height="56" Margin="102,157,0,0" VerticalAlignment="Top" Width="190" Click="button_Click"/> </Grid>