【发布时间】:2020-08-11 06:35:12
【问题描述】:
enter image description hereMy 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 有问题?感谢任何可以帮助我的人。
【问题讨论】:
-
请确保
pkListCat有数据。我用的是静态数据,我用你的方式,它显示正确。这是运行截图。 imgur.com/a/bi0TtwN -
感谢您的回复,但问题不是填写列表(没关系),而是在选择器中显示打开页面时保存的字段内容。这适用于 xaml 代码中定义的数组,但不适用于后面代码中定义的数组。
-
您没有在后台代码中设置
mypicker.SelectedItem = "xxx";。 -
我已经试过了:不管定义与否,都不会改变任何东西。页面打开时,选择器中不显示值 NomCat。最令人不安的是,如果用户在没有重新填充选择器的情况下验证页面,则选择器的字段在数据库中为空。
-
第一次插入模型时,如果用户在没有重新填充选择器的情况下验证页面,您可以在数据库中插入默认值
标签: android xamarin.forms data-binding picker