在列表框中显示多个本地数据库值

时间:2014-05-13 13:52:02

标签: c# listbox windows-phone-8.1

我试图将本地数据库中的数据列出到WP8.1的列表框

的.xaml:

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
            <Image Source= "**Fruit Image**" Height="26" Width="50" Margin="12,10,9,0" VerticalAlignment="Top"/>
                <TextBlock Text="**Fruit Name**"  FontSize="26" Style="{StaticResource BodyTextBlockStyle}"/>
                <TextBlock Text="**Fruit Colour**"  FontSize="26" Style="{StaticResource BodyTextBlockStyle}"/>
        </StackPanel>
    </DataTemplate>
 </ListBox.ItemTemplate>

从我的数据库中获取价值

的.cs:

public void ListFruit()
{
    using (var db = new SQLite.SQLiteConnection(this.DBPath))
    {
        List<Fruits> retrievedTasks = db.Table<Fruits>().ToList<Fruits>();
    }
}

的.cs

public class Fruits
{
    public string ImgPath { get; set; }
    public string FruitName { get; set; }
    public string FruitColour{ get; set; }
}

我不确定我使用的方法是否正确,请指导我。谢谢!

1 个答案:

答案 0 :(得分:0)

您已在班级中定义了属性,但已为List<Fruit>填充了项目。 你应该做的是(如果你还没有这样做):

List<Fruit>定义为列表框的ItemsSource

public void ListFruit()
{
  using (var db = new SQLite.SQLiteConnection(this.DBPath))
  {
      List<Fruits> retrievedTasks = db.Table<Fruits>().ToList<Fruits>();
      myListbox.ItemsSource = retrievedTasks; // or directly
  }
} 

您可能还会考虑使用ObservableCollection而不是List - 在这种情况下,您只需要设置ItemsSource一次 - 例如在Page的构造函数中。您还可以考虑实施INotifyPropertyChanged,以便在项目更改时通知View。

我不确定你是否在你的xaml(或其他地方)中定义了Binding:

<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
            <Image Source= "{Binding ImgPath}" Height="26" Width="50" Margin="12,10,9,0" VerticalAlignment="Top"/>
                <TextBlock Text="{Binding FruitName}"  FontSize="26" Style="{StaticResource BodyTextBlockStyle}"/>
                <TextBlock Text="{Binding FruitColour}"  FontSize="26" Style="{StaticResource BodyTextBlockStyle}"/>
        </StackPanel>
    </DataTemplate>
 </ListBox.ItemTemplate>