4

当我创建资源时,我们在其中指定 DataType:

<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}">

那么我们为什么要使用 DataType,即使我删除了 DatType ,我的示例运行良好。它是否限制了某些类型,可以在 DataTemplete 中?

但是我尝试将其中一个 TextBox 与垃圾值(视图模型中不存在)绑定,它工作正常!

4

1 回答 1

12

DataType用于隐式应用程序,如果您删除了,则x:Key不需要在ItemsControl.ItemTemplate示例中引用它。阅读文档

此属性与Style类的TargetType属性非常相似。当您将此属性设置为数据类型而不指定x:Key时,DataTemplate会自动应用于该类型的数据对象。请注意,当您这样做时,会隐式设置x:Key 。因此,如果您为此DataTemplate分配一个x:Key值,您将覆盖隐式x:Key,并且不会自动应用DataTemplate 。

于 2012-07-11T13:35:42.420 回答