Итак, мы используем привязываемые средства выбора для выбора параметров в вопроснике. Эти параметры загружаются из списка, который приложение загружает с определенного URL-адреса.
И количество вопросов в списке и самих списках изменяется, поэтому создание сборщиков должно быть динамическим (т. Е. Программно, кодом c #). как пример:
static BindablePicker SetResPicker (List<Option> options) {
BindablePicker bin = new BindablePicker {
ItemsSource = options, DisplayProperty = "value", TextColor = ColorPicker (1),
HorizontalOptions = FILLNEXP, VerticalOptions = CENTERNEXP
};
return bin;
}
где свойство "value" является строкой, в основном "YES" или "NO", но иногда доступны три или более параметров ("Great", "Good", "Bad", "Unknown"; для пример).
Но внезапно, когда приложение начинает загружать кучу вопросов (по умолчанию, так как это тест), оно заканчивается на «MainActivity» части Android с этим сообщением:
[MonoDroid] НЕПРАВИЛЬНОЕ ИСКЛЮЧЕНИЕ:
[MonoDroid] System.InvalidCastException: указанное приведение недействительно.
[MonoDroid] на FreshEssentials.Droid.BindablePickerRendererDroid.OnElementChanged
Да, мы начинаем наши тесты в Android.
Мы подтвердили, что список опций корректен (все строки, нулевые значения и т. Д.), Поэтому мы попробовали элемент выбора из Xamarin.Forms. Это результат:
static Picker SetBindPicker (List< Option > options) {
Picker picker = new Picker {
Title = "Options", TextColor = ColorPicker (1),
HorizontalOptions = FILLNEXP, VerticalOptions = CENTERNEXP
};
picker.SetBinding (Picker.ItemsSourceProperty, "options");
picker.ItemDisplayBinding = new Binding ("value");
return picker;
}
класс «Option», если он помогает с проблемой:
namespace Lib {
public class Option {
public int id { get; set; }
public string value { get; set; }
public Option () { }
public Option (int id, string value) {
this.id = id;
this. value = value;
}
}
}
но селектор пуст, отображается только «0».
Что-то не так с нашим кодом SetBindPicker?
Чего-то не хватает?
Есть ли другие варианты в случае отсутствия решения?
Спасибо за ваше время.