Согласно вашему описанию, вы oop элемент из списка и хотите привязать каждый элемент к пользовательскому интерфейсу, я делаю код в соответствии с вашим кодом, вы можете посмотреть:
public Page33()
{
InitializeComponent();
this.BindingContext = new CheckListEditViewModel();
StackLayout stack = new StackLayout();
for(int i=0;i<(BindingContext as CheckListEditViewModel).CheckListItems.Count;i++)
{
var item = (BindingContext as CheckListEditViewModel).CheckListItems[i];
var description = new Label()
{
Text = item.Description
};
stack.Children.Add(description);
if ((item.ChecklistItemType == "Number"))
{
var numerEntry = new Entry();
numerEntry.Keyboard = Keyboard.Numeric;
numerEntry.SetBinding(Entry.TextProperty, new Binding("value",BindingMode.TwoWay,source:item));
stack.Children.Add(numerEntry);
}
else if ((item.ChecklistItemType == "Email"))
{
var numerEntry = new Entry();
numerEntry.Keyboard = Keyboard.Email;
numerEntry.SetBinding(Entry.TextProperty, new Binding("value", BindingMode.TwoWay, source: item));
stack.Children.Add(numerEntry);
}
}
this.Content = stack;
}
}
public class CheckListEditViewModel:ViewModelBase
{
private List<EditModel> _CheckListItems;
public List<EditModel> CheckListItems
{
get { return _CheckListItems; }
set
{
_CheckListItems = value;
RaisePropertyChanged("CheckListItems");
}
}
public CheckListEditViewModel()
{
CheckListItems = new List<EditModel>();
CheckListItems.Add(new EditModel() {Description="one model",ChecklistItemType="Email",value="123@outlook.com" });
CheckListItems.Add(new EditModel() { Description = "two model", ChecklistItemType = "Number",value="12345" });
CheckListItems.Add(new EditModel() { Description = "three model", ChecklistItemType = "Email",value="345@outlook.com" });
CheckListItems.Add(new EditModel() { Description = "four model", ChecklistItemType = "Number",value="567" });
}
}
public class EditModel
{
public string Description { get; set; }
public string ChecklistItemType { get; set; }
public string value { get; set; }
}
Я устанавливаю текущий ContentPage BindingContext = new CheckListEditViewModel (), затем l oop каждый элемент списка, затем элемент является источником текущего элемента управления.