У меня есть приложение для форм xamarin, которое получает данные из базы данных. База данных возвращает данные «Авто». У всех этих объектов есть пара свойств. Одно из этих свойств решает, какой вид должен отображаться на экране. Таким образом, автомобиль может иметь свойство с именем «TypeOfView» со значением «Entry» или «Picker» и т. Д. c ..
Проблема заключается в следующем: как я могу динамически создавать виды на основе этого свойства и как это может быть привязано к объектам в списке в viewmodel?
// Это код, за которым создаются элементы управления UI
BindingContext = DependencyInjectionService.Get<CheckListEditViewModel>();
var stack = new StackLayout()
{
Orientation = StackOrientation.Vertical,
Padding = 5
};
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 == Domain.ChecklistItemType.Number))
{
var numerEntry = new Entry();
numerEntry.Keyboard = Keyboard.Numeric;
numerEntry.TextChanged += MyMethod;
numerEntry.SetBinding(Entry.TextProperty, new Binding(mode: BindingMode.TwoWay, path: "Value", source: item));
stack.Children.Add(numerEntry);
// this is to test if the binding worked
var testLabelBindingTesting = new Label();
testLabelBindingTesting.SetBinding(Label.TextProperty, new Binding(mode: BindingMode.TwoWay, path: "Value", source: item));
stack.Children.Add(testLabelBindingTesting);
}
else if ((item.ChecklistItemType == Domain.ChecklistItemType.Email))
{
var numerEntry = new Entry();
numerEntry.Keyboard = Keyboard.Email;
stack.Children.Add(numerEntry);
}
}
Content = stack;
// Список находится в классе viewmodel:
public ObservableCollection<ChecklistItem> CheckListItems { get; set; }