为什么我不能在 ListView 中使用我的 ObservableCollection 中的属性

Why can't I use properties from my ObservableCollection inside a ListView

我正在尝试 return 一个 Observablecollection,似乎没问题。当我想获取集合中每个项目的属性时,出现错误“Binding: 属性 '' not found on”。

我有以下代码:
我删除了所有标记代码,以便于阅读

查看

<ListView ItemsSource="{Binding Books}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <ViewCell>
                <Grid>
                    <Label Text="{Binding Title}" />
                    <Label Text="{Binding Description}" />
                    <Label Text="{Binding Date}" />
                </Grid>
            </ViewCell>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

ViewModel

public class BookListPageViewModel : ViewModelBase
{
    private ObservableCollection<Book> _books = new();
    public ObservableCollection<Book> Books
    {
        get => _books;
        set => SetProperty(ref _books, value);
    }
}

型号

public class Book : ModelBase
{
    public string Title { get; set; }
    public string Description { get; set; }
    public string Date { get; set; }
}

奇怪的是,之前我在 ViewModel 文件中有 class Book 并且确实有效。但我希望这个 class 位于 Models 文件夹中。
这就是我的 ViewModel 以前的样子。

namespace Some.Namespace.Project
{
    public class Book : ModelBase
    {
        public string Title { get; set; }
        public string Description { get; set; }
        public string Date { get; set; }
    }

    public class BooksListPageViewModel : ViewModelBase
    {
        private ObservableCollection<Book> _books = new();
        public ObservableCollection<Book> Books
        {
            get => _books;
            set => SetProperty(ref _books, value);
        }
    }
}

怎么找不到Bindings (Title, Description, and Date)

我是 XAML 的新手,显然可以在 ContentPage.

中添加您自己的 x-tags

所以在我的 ContentPage 中我添加了 xmlns:models="clr-namespace:Namespace.To.Models"
使用此标签,我可以将 DataTemplate 更改为 <DataTemplate x:DataType="models:Book">

这解决了我的问题。