加载一个包含数据库项的列表框(LINQ) (Windows Phone)
本文关键字:列表 LINQ Windows Phone 数据库 一个 包含 加载 | 更新日期: 2023-09-27 18:15:14
edit:更新后的代码
我很难理解如何从数据库加载数据到列表或集合,并将其绑定到ListBox。
这是在我的ViewModel。
// List of Album set as the data source for Listbox
private ObservableCollection<Album> _albums;
public ObservableCollection<Album> Albums
{
get { return _albums; }
set { _albums = value; NotifyPropertyChanged(); }
}
private void AddAlbum()
{
albumDB.Albums.InsertOnSubmit(new Album
{
AlbumName = AlbumName,
AlbumTimeStamp = DateTime.Now,
IsPrivate = IsPrivate,
Password = Password
});
SaveChangesToDB();
LoadAlbums();
}
private void LoadAlbums()
{
Albums = new ObservableCollection<Album>(albumDB.Albums);
}
XAML
<ListBox x:Name="AlbumList">
<ListBox.ItemTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Albums}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding AlbumName}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我不认为我需要张贴模型,但如果这样的话,我可以!
你可以像这样改变你的DataTemplate
<DataTemplate>
<TextBlock Text="{Binding AlbumName}"></TextBlock>
</DataTemplate>
因为ListBox的DataContext
。ItemTemplate为Album。所以你应该做的是绑定AlbumName到你的TextBlock,而不是albummodel。AlbumName。
你可以这样做
<ListBox x:Name="AlbumList" ItemsSource="{Binding Albums}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding AlbumName}"></TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
一切顺利