how can I bind a full response from SQLite?
c#, sqlite, wpf, xamarin.forms, xaml
Solution
Given
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="AmsterdamTheMapV3.CategoriePage">
<ListView x:Name="listView">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<ViewCell.View>
<StackLayout>
<Label Text="{Binding Name}" />
</StackLayout>
</ViewCell.View>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
Update code behind
namespace AmsterdamTheMapV3 {
public partial class CategoriePage : ContentPage {
public CategoriePage(string txt) {
InitializeComponent();
this.Appearing += (s,e) => {
if(NotInDesignMode) {
int page = 0;
if(int.TryParse(txt, out page)){
var categories = App.Database.GetCategoryByMenuID(page);
this.listView.ItemsSource = categories;
}
}
};
}
bool NotInDesignMode {
get { return Application.Current != null; }
}
}
}
Problem
I am making a `ListView` inside my C# file. But instead of that I want to add the data I get from sqlite too the xaml file with data binding so I can still edit the layout with xaml. So every response from sqlite needs to be added as label(`<TextCell Text="{Binding Name}" />`). My question: How can I bind the response from `GetCategoryByMenuID` to TextCell `Text="{Binding Name}"`? xaml page (CategoriePage.xaml): ``` <?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="AmsterdamTheMapV3.CategoriePage"> <ListView x:Name="listView"> <ListView.ItemTemplate> <DataTemplate> <TextCell Text="{Binding Name}" /> </DataTemplate> </ListView.ItemTemplate> </ListView> </ContentPage> ``` Back-end / C# (CategoriePage.xaml.cs) : ``` namespace AmsterdamTheMapV3 { public partial class CategoriePage : ContentPage { public CategoriePage(String txt) { InitializeComponent(); var layout = new StackLayout { Padding = new Thickness(5, 10) }; int page = Int32.Parse(txt); this.Content = layout; var categories = App.Database.GetCategoryByMenuID(page); var datatemplate = new DataTemplate(() => { var nameLabel = new Label(); nameLabel.SetBinding(Label.TextProperty, "Name"); //nameLabel.SetBinding(Label.idProperty, "Name"); return new ViewCell { View = nameLabel }; }); var listView = new ListView { ItemsSource = categories, ItemTemplate = datatemplate }; layout.Children.Add(listView); } } } ``` GetCategoryPage function: ``` public List<Categories> GetCategoryByMenuID(int menuID) { lock (locker) { return db.Table<Categories>().Where(x => x.Menu_ID == menuID).ToList(); } } ```