簡體   English   中英

Xamarin.Forms:在選擇器中顯示來自 sqlite 數據庫的字段值

[英]Xamarin.Forms : display value of a field from a sqlite database in a picker

在此處輸入圖像描述我的 Xamarin.Forms 應用程序將數據存儲在 sqlite 數據庫中。 在這個數據庫中,我有一個 Article 表,定義如下:

public class Article
{
    [PrimaryKey, AutoIncrement]
    public int ID { get; set; }
    public string Name { get; set; }
    public string NomCat { get; set; }
    public string UniteMesure { get; set; }
    public string Note { get; set; }
    public byte[] ImageArt { get; set; }
}

當用戶修改一篇文章時,我會顯示不同的字段,以便用戶可以修改它們。 在創建時在選擇器中輸入了 2 個字段(NomCat 和 Unitemesure)。 我希望當頁面打開以修改文章時,選擇器顯示表中包含的值。 目前,選擇器輸入字段為空,而所有其他字段通過綁定正確顯示。 如果我用數組定義 xaml 代碼中的 Picker.ItemsSource ,則顯示該字段的值:

<Picker x:Name="pickerCat"
                    Title="choisissez une catégorie"
                    SelectedItem="{Binding NomCat}">
                <Picker.ItemsSource>
                    <x:Array Type="{x:Type x:String}">
                        <x:String>Fruits</x:String>
                        <x:String>Légumes</x:String>
                        <x:String>Crèmerie</x:String>
                        <x:String>Charcuterie</x:String>
                    </x:Array>
                </Picker.ItemsSource>
            </Picker>

如果表是在后面的代碼中定義的,則什么也不顯示:

        List<string> pkListCat = new List<string>();
        foreach (var item in DB_CategorieList_Sorted)
        {
            string element = item.NomCat;
            pkListCat.Add(element);
        }
        pickerListCat = pkListCat.ToArray();
        pickerCat.ItemsSource = pickerListCat;

我已經搜索了很長時間,但我什么也沒找到。 我犯了錯誤還是 xamarin.forms 有問題? 感謝任何可以幫助我的人。

我可能在 BindingContext 中犯了一個錯誤,但我找到了解決該問題的方法。 我刪除了 xaml 代碼中的綁定:

<Picker x:Name="pickerCat" SelectedIndexChanged="pickerCat_SelectedIndexChanged">

我在后面的代碼中添加了幾行:

if (_article.NomCat == null)
        {
            pickerCat.Title = "choisissez une catégorie";
            pickerCat.TitleColor = Color.Gray;
        }
else
        {
            pickerCat.Title = _article.NomCat;
            pickerCat.TitleColor = Color.Black;
        }
string[] pickerListCat;
List<string> pkListCat = new List<string>();
foreach (var item in DB_CategorieList_Sorted)
       {
           string element = item.NomCat;
           pkListCat.Add(element);
       }
pickerListCat = pkListCat.ToArray();
pickerCat.ItemsSource = pickerListCat;

private void pickerCat_SelectedIndexChanged(object sender, EventArgs e)
    {
        string selectedItem = (string)pickerCat.SelectedItem;
        if (_article != null)
            _article.NomCat = selectedItem;
    }

現在它工作得很好:讀取表格中的元素后,字段的值顯示在選擇器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM