毛伊岛的 CollectionView 未绑定数据模型中的属性

问题描述 投票:0回答:1

我创建了一个集合视图,但它迫使我使用数据类型来说明属性模型是什么。

以前不需要这样做,是不是我做错了什么?

如果没有数据类型,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>

预计无需使用数据类型即可进行绑定

.net xaml mvvm maui
1个回答
0
投票

来自文档

要使用已编译的绑定,请将 VisualElement 上的 x:DataType 属性设置为 VisualElement 及其子级将绑定到的对象的类型。建议将 x:DataType 属性设置在视图层次结构中与设置 BindingContext 相同的级别。但是,可以在视图层次结构中的任何位置重新定义此属性。

当您在

x:DataType="vm:TodayViewModel"
级别设置
ContentPage
时,您选择使用编译绑定,并且由于 collectionView 的数据类型将与 ContentPage 的数据类型不同,因此您必须指定它,否则它会假设它是与其父级相同的类型 (
ContentPage
)。

如果您不想在 CollectionView 级别设置数据类型,则必须删除 ContentPage 级别中的数据类型。

© www.soinside.com 2019 - 2024. All rights reserved.