我创建了一个集合视图,但它迫使我使用数据类型来说明属性模型是什么。
以前不需要这样做,是不是我做错了什么?
如果没有数据类型,xaml 找不到该属性
<ContentPage xmlns:models="clr-namespace:App.GRRInnovations.TodoManager.Models"
xmlns:vm="clr-namespace:App.GRRInnovations.TodoManager.ViewModels"
x:DataType="vm:TodayViewModel">
<CollectionView
ItemsSource="{Binding Appointments}">
<CollectionView.ItemTemplate>
<DataTemplate x:DataType="models:AppointmentModel">
<HorizontalStackLayout>
<Label FontAttributes="Bold" Text="{Binding Title}" />
<Label Text=" - " />
<Label Text="{Binding Description}" />
</HorizontalStackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
预计无需使用数据类型即可进行绑定
来自文档:
要使用已编译的绑定,请将 VisualElement 上的 x:DataType 属性设置为 VisualElement 及其子级将绑定到的对象的类型。建议将 x:DataType 属性设置在视图层次结构中与设置 BindingContext 相同的级别。但是,可以在视图层次结构中的任何位置重新定义此属性。
当您在
x:DataType="vm:TodayViewModel"
级别设置 ContentPage
时,您选择使用编译绑定,并且由于 collectionView 的数据类型将与 ContentPage 的数据类型不同,因此您必须指定它,否则它会假设它是与其父级相同的类型 (ContentPage
)。
如果您不想在 CollectionView 级别设置数据类型,则必须删除 ContentPage 级别中的数据类型。