我想創建一個從 .db 檔案中獲取值的簡單測驗應用程式。
在我的 MainPage.xaml.cs 中,我想暫時以串列形式列出我的所有問題(只有一個用于測驗的答案選項,來自嵌入并為兩個平臺正確實作的資料庫),但我得到一個白色空的東西沒有任何錯誤訊息。
資料模型/問題.cs
namespace quiztest.DataModels
{
public class Questions
{
[PrimaryKey]
public int ID { get; set; }
public string Field{ get; set; }
public string Question{ get; set; }
public string Answer1 { get; set; }
public string Answer2 { get; set; }
public string Answer3 { get; set; }
public string Answer4 { get; set; }
public string CorrectAnswer { get; set; }
}
}
MainPage.xaml.cs
using quiztest.DataModels;
...
protected override void OnAppearing()
{
base.OnAppearing();
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
{
var questions = conn.Table<Question>().ToList();
quizListView.ItemsSource = questions;
}
}
主頁.Xaml
<StackLayout>
<Label Text="Contents:"/>
<Label x:Name="labelrandom"/>
<ScrollView>
<ListView x:Name="quizListView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Question}" Detail="{Binding Answer1}" TextColor="Aquamarine"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ScrollView>
</StackLayout>
我覺得這個問題與讓正確的列顯示在文本單元格上有關,但我剛剛開始學習,我不是專家。
uj5u.com熱心網友回復:
代替
var questions = conn.Table<Question>().ToList();
quizListView.ItemsSource = questions;
和
var questions = (from x in conn.Table<Question>() select x).ToList();
quizListView.ItemsSource = questions ;
uj5u.com熱心網友回復:
我建議您改用 collectionview。解決您的問題將串列視圖系結到 observablecollention
private ObservableCollection<Questions> questionsList;
public ObservableCollection<Questions> QuestionsList
{
get { return questionsList; }
set
{
if (questionsList != value)
{
questionsList = value;
}
}
}
然后在你的函式中:
protected override void OnAppearing()
{
base.OnAppearing();
using (SQLiteConnection conn = new SQLiteConnection(App.FilePath))
{
var quesList = (from x in conn.Table<Question>() select x).ToList();
QuestionsList = new ObservableCollection<Questions>(quesList);
quizListView.ItemsSource = QuestionsList;
}
}
或者您可以將其直接系結到串列視圖
<ListView x:Name="quizListView" ItemsSource={Binding QuestionsList}>
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding Question}" Detail="{Binding Answer1}" TextColor="Aquamarine"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
uj5u.com熱心網友回復:
我建議您使用以下代碼在 App.cs 中創建連接:靜態 NoteDatabase 資料庫;
// Create the database connection as a singleton.
public static MyDatabase Database
{
get
{
if (database == null)
{
database = new MyDatabase(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "dbfile.db3"));
}
return database;
}
}
并將 itemssource 設定為 onappearing。
您可以參考此示例以更好地理解:https ://docs.microsoft.com/en-us/samples/xamarin/xamarin-forms-samples/getstarted-notes-database/
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/424301.html
標籤:C# sqlite xamarin xamarin.forms 单核细胞增多症
