У меня есть модель User.cs
, которая выглядит как
class User
{
int Id { get; set; }
string Name { get; set; }
}
и UsersViewModel.cs
class UsersViewModel
{
IEnumerable<User> Users { get; set; }
readonly DatabaseContext database;
UsersViewModel()
{
Users =
from user in database.Users
orderby user.Id
select user;
}
}
, где DatabaseContext
- это класс, который позволяет мне общаться с моим PostgreSQL.
Я хочу заполнить страницу Name
каждого User
, присутствующего в IEnumerable<User>
. У меня есть UsersPage.xaml
, который пытается сделать это с
<CollectionView ItemsSource="{Binding Users}">
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<Label Text="{Binding }" />
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
, но он возвращает мне
MyGlobalNamespace.Models.User
столько раз, сколько у меня User
записей в моей базе данных. Я знаю, что трюк лежит где-то в <Label Text="{Binding }" />
, но я не могу понять, как это сделать.
Однако мне удалось добиться того, чего я хочу, добавив List<string> UserNames
, который заполняется через
foreach (var user in Users)
{
UserNames.Add(user.Name);
}
и замену {Binding Users}
на {Binding UserNames}
, но я очень сомневаюсь, что именно так я должен делать