В настоящее время я работаю над проектом, в котором я пытаюсь программно сгенерировать столбцы таблицы данных syncfusion и назначить каждому столбцу настраиваемый шаблон, который представляет собой просто поле ввода, которое можно редактировать. Я смог создать все поля. Каждый из них не был привязан к крупной новой версии, мне также нужно привязать к нему начальное значение, что я пробовал с простыми метками, и, похоже, это сработало. Однако, когда я пытаюсь запустить это, я получаю сообщение об ошибке:
Binding: свойство Distances не найдено в APPNAME.ViewModel, целевое свойство: Syncfusion.SfDataGrid.XForms.Renderers.SfEntry .Text.
Он по-прежнему отображает ячейки, но не в правильном представлении.
ContentPage:
public MainPage()
{
InitializeComponent();
dataGridView.FrozenColumnsCount = 1;
dataGridView.ItemsSource = viewModel.Objects;
dataGridView.BindingContext = viewModel.Objects;
for (int i = 0; i < numberOfDatapoints; i++)
{
var newColumn = new GridTemplateColumn()
{
HeaderText = $"Distance {i + 1}",
MappingName = $"Distances[{i}].Distance",
Width = 100
};
Xamarin.Forms.DataTemplate templateColumn = new Xamarin.Forms.DataTemplate(() =>
{
var entry = new SfEntry()
{
HorizontalTextAlignment = Xamarin.Forms.TextAlignment.Center,
VerticalTextAlignment = Xamarin.Forms.TextAlignment.Center,
BindingContext = viewModel
};
entry.SetBinding(SfEntry.TextProperty, $"Distances[{i}].Distance");
return entry;
});
newColumn.CellTemplate = templateColumn;
dataGridView.Columns.Add(newColumn);
}
}
Модель просмотра просто содержит наблюдаемую коллекцию "BindingObjectTest", который затем заполняется.
Итак, структура данных следующая: viewmodel -> Objects (ObsLst [BindObjTst]) -> Distances (ObsLst [ObservableDistances]) -> Distance (decimal)
Как я уже сказал, решение работает с метками, но я не понимаю, почему оно не привязано должным образом к записи. (Мне кажется подозрительным, что это может быть связано с тем, что Sf.Entry.TextProperty отличается от SfEntry.
Если вам нужна дополнительная информация, просто спросите :) Заранее спасибо за вашу помощь.