Извиняюсь заранее, если об этом спрашивали раньше. Самым близким, что я нашел, было ( Как использовать вертикальное представление прокрутки для отображения обязательных данных ), что выглядит многообещающе, хотя я не уверен, что это будет работать, потому что я понимаю, что шаблон, как имя и определение подразумевает, должно следовать заданному шаблону c и, следовательно, не может быть динамическим c.
Моя проблема : Я пытаюсь переписать часть нашего кода, чтобы более точно следовать шаблонам MVVM, это, конечно, означает сделать представление настолько глупым, насколько это возможно. На мой взгляд (xaml.cs) у меня есть код, который делает следующее:
foreach(var tuple in itemsToAdd)
{
var formEntry = formEntries.First(x => x.FormEntryId == tuple.Item1);
var controlType = formatting.GetControlType(formEntry.FormAnswerName,
formEntry.CustomEntryIdentifier);
if (formEntry.Type == 0) {
switch (controlType) {
case CustomControl.Duration:
CustomFields.Children.Add(new DurationView(formEntry.FormEntryId, viewModel));
break;
case CustomControl.TextField:
case CustomControl.InputField:
CustomFields.Children.Add(new InputFieldView(formEntry.FormEntryId, viewModel));
.....//continues like this for different controls.
Список itemsToAdd
определен в моей модели представления, его работа заключается в том, чтобы выяснить, какие элементы из пользовательского шаблона нужно отображать. Это, конечно, хорошо, поскольку, согласно моему пониманию MVVM, модель представления - это то, что должно контролировать поведение (в данном случае, что отображать), а пользовательский интерфейс просто обрабатывает отображение полей.
Мне было интересно, возможно ли также позволить модели представления обрабатывать, по сути, настройку источника элемента представления прокрутки, как мы делаем, когда создаем источник элемента для представления списка (скажем, как список доступных шаблонов), так как каждый из элементов управления является пользовательским представлением, которое мы создали, я не вижу выполнимого способа достичь этого, поскольку он не может (насколько я понимаю) следовать шаблону, поскольку каждый элемент управления является отличается, и я не хочу, чтобы моя модель представления возвращала фактический объект представления, поскольку это нарушило бы принципы MVVM.
По сути, это: я неправильно понимаю MVVM в Xamarin, и это нормально для xaml код, чтобы добавить элементы, как то, что я показываю в фрагменте кода.
Извиняюсь, если неясно, о чем я прошу!