加载一个包含数据库项的列表框(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>

我不认为我需要张贴模型,但如果这样的话,我可以!

加载一个包含数据库项的列表框(LINQ) (Windows Phone)

你可以像这样改变你的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>

一切顺利