为什么我不能在 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">
。
这解决了我的问题。
我正在尝试 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">
。
这解决了我的问题。