当我创建资源时,我们指定其中的数据类型:
<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,即使我删除 Data Type,我的示例也可以正常运行。它是否限制 DataTemplate 中可以包含的某些类型?
但我尝试将其中一个文本框与垃圾值(不存在于视图模型中)绑定,它工作正常!
The DataType
用于隐式应用程序,如果您删除x:Key
您不需要在ItemsControl.ItemTemplate
例如。读文档 http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.datatype.aspx.
这个属性非常类似于目标类型 http://msdn.microsoft.com/en-us/library/system.windows.style.targettype.aspx的财产Style http://msdn.microsoft.com/en-us/library/system.windows.style.aspx班级。当您将此属性设置为数据类型而不指定x:Key, the 数据模板 http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.aspx自动应用于该类型的数据对象。请注意,当您这样做时x:Key是隐式设置的。因此,如果您分配此数据模板 http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.aspx an x:Key值,您正在覆盖隐式x:Key和数据模板 http://msdn.microsoft.com/en-us/library/system.windows.datatemplate.aspx不会自动应用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)