首页 > 解决方案 > 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

标签: xamarin.forms

解决方案


您在选择器中的绑定之间有点混淆。

<Picker ItemDisplayBinding="{Binding ItemName}" 
        ItemsSource="{Binding itemlist}" 
        Title="Select Item..." 
        Style="{StaticResource PickerFrameStyle}"></Picker>

推荐阅读