Wpf 为什么要使用DataTemplate.DataType

Wpf 为什么要使用DataTemplate.DataType,wpf,xaml,datatemplate,Wpf,Xaml,Datatemplate,创建资源时,我们指定其中的数据类型: <Window.Resources> <DataTemplate x:Key="StudentView" DataType="this:StudentData"> <TextBox Text="{Binding Path=StudentFirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

创建资源时,我们指定其中的数据类型:

<Window.Resources>
    <DataTemplate x:Key="StudentView"
                  DataType="this:StudentData">
          <TextBox Text="{Binding Path=StudentFirstName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                   Grid.Row="1"
                   Grid.Column="2"
                   VerticalAlignment="Center" />
          <TextBox Text="{Binding Path=StudentGradePointAverage}"
                   Grid.Row="2"
                   Grid.Column="2"
                   VerticalAlignment="Center" />
    </DataTemplate>
<Window.Resources>

在具有约束力的同时:

<ItemsControl ItemsSource="{Binding TheStudents}"
              ItemTemplate="{StaticResource StudentView}">

那么为什么我们要使用数据类型呢?即使我删除了DatType,我的示例也运行良好。是否限制了DataTemplete中的某些类型


但是我试着用一个垃圾值绑定一个TextBox(在视图模型中不存在),结果很好

数据类型用于隐式应用,例如,如果您删除
x:Key
,则不需要在
ItemsControl.itemstemplate
中引用它。阅读

此属性与类的属性非常相似。如果将此属性设置为数据类型而不指定x:Key,则将自动应用于该类型的数据对象。请注意,执行此操作时,x:Key是隐式设置的。因此,如果为其指定一个x:Key值,则会覆盖隐式x:Key,并且不会自动应用


一个优点是知道预期的数据上下文类型允许对绑定路径是否有效进行一些静态验证。这也是向未来开发人员提示DataTemplate意图的文档。