xamarin.forms - xamarin 动态形成 mvvm 模式选择器
问题描述
我正在使用 xamarin 形式的 MVVM 模式。我正在使用选择器并从 sqlite 数据库动态分配 itemdisplaybinging 和 itemssource。我附上了图片。
在 AddItems.xaml 中:
enter code here
<Picker ItemDisplayBinding="{Binding itemlist.ItemName}"
ItemsSource="{Binding itemlist.ItemID}" Title="Select Item..."
Style="{StaticResource PickerFrameStyle}"></Picker>
在 AddItems.xaml.cs 中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ERPSoftware.ViewModel;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace ERPSoftware.Pages.Add
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class AddItems : ContentPage
{
public AddItems()
{
InitializeComponent();
var vm = new AddViewModel();
this.BindingContext = vm;
}
}
}
在 AddViewModel.cs(ViewModel) 中:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
using ERPSoftware.Models;
using ERPSoftware.SQLiteDatabase;
using System.Runtime.CompilerServices;
namespace ERPSoftware.ViewModel
{
public class AddViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private bool _IsBusy;
//public ICommand AddItemCommand { protected get; set; }
public ItemPickerPageModel _ItemPickerPageModel;
UETrackDatabase uETrackDatabase = new UETrackDatabase();
private List<ItemPickerPageModel> _itemlist=new List<ItemPickerPageModel>();
public AddViewModel()
{
IsBusy = false;
ItemPickerPageModel = new ItemPickerPageModel();
var ItemList = uETrackDatabase.GetItemPicker();
if (ItemList.Count > 0)
{
foreach(var list in ItemList)
{
_itemlist.Add(new ItemPickerPageModel {ItemID=list.ItemID,ItemName=list.ItemName });
}
}
}
public List<ItemPickerPageModel> itemlist
{
get { return _itemlist; }
private set {
_itemlist = value;
OnPropertyChanged();
}
}
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
我用这个附加了视图模型屏幕。运行项目时选择器显示为空。请帮我解决这个问题。 在此处输入图像描述 问候, Manthiram C
解决方案
您在选择器中的绑定之间有点混淆。
<Picker ItemDisplayBinding="{Binding ItemName}"
ItemsSource="{Binding itemlist}"
Title="Select Item..."
Style="{StaticResource PickerFrameStyle}"></Picker>
推荐阅读
- c# - 如何在 WPF C# 中的 ItemsControl 中获取项目值?
- javascript - 为 Flutter Web 应用添加 id 或 name 属性或其他标识方式?
- html - Bootstrap 使列的高度相同 - 在文本行上对齐
- pyspark - pyspark 爆炸字典列表并根据字典键对它们进行分组
- extjs - 在 extjs 4.2.1 中禁用整个列
- javascript - 如何使用 NodeJS 从 MongoDb 获取 JSONObject 形式的结果
- python - 删除文件夹和所有子文件夹中python中的文件类型
- elasticsearch - ElasticSearch 索引,它们是如何工作的以及它们是什么?
- apache-flink - flink 集群重启时自动恢复作业
- javascript - 引导框警报未在 $.post(url, data).done() 代码中弹出