BindablePicker из FreashEssentials не работает - PullRequest
0 голосов
/ 26 марта 2019

Итак, мы используем привязываемые средства выбора для выбора параметров в вопроснике. Эти параметры загружаются из списка, который приложение загружает с определенного 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? Чего-то не хватает? Есть ли другие варианты в случае отсутствия решения?

Спасибо за ваше время.

...