Предмет для отображения для выбора не отображается при загрузке - PullRequest
0 голосов
/ 25 декабря 2018

Это приложение Xamarin Forms.Я использую Fresh MVVM.У меня есть страница модификации, где я могу изменить логическое значение с помощью выбора (true, false, null).У меня есть список логических значений (для каждого средства выбора - одно значение и в списке ViewModel, заполненном из БД). Bool преобразует (используя конвертер) в объект с двумя значениями: Text (строка) и Value (bool?), Который является классом - написано CheckListValueниже.

Логика - я помещаю некоторые значения с помощью средства выбора, сохраняю его в БД и после того, как могу его изменить, поэтому при загрузке я должен увидеть выбранное значение.Но поле выбора - пустое. Вот результат, что я вижу .Я должен увидеть Binded Item в ItemDisplayBinding и его текст (отрицательный, положительный или пустой).

Я думал, что проблема в Binding, но, похоже, все в порядке.

<Picker Grid.Row="1" Grid.Column="0" ItemsSource="{Binding CheckListValueList,  Mode=TwoWay}" 
ItemDisplayBinding="{Binding Text}" SelectedItem="{Binding CheckListProperties.SomeBooleanValue, Mode=TwoWay, Converter={StaticResource BoolToCheckListConverter}}"/>

вот CheckListValue

public static CheckListValue Positive=> new CheckListValue
{
    Text = "Positive",
    Value = true
};
public static CheckListValue Negative=> new CheckListValue
{
    Text = "Negative",
    Value = false
};
public static CheckListValue Empty=> new CheckListValue
{
   Text = "Empty",
   Value = null
};
public static List<CheckListValue> All => new List<CheckListValue>
{
    Positive, Negative, Empty
};

}
public class CheckListValue
{
    public string Text { get; set; }
    public bool? Value { get; set; }
}

И конвертер:

public class BoolNullableToCheckListValueConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var boolValue = value as bool?;
        if (!boolValue.HasValue)
            return CheckListValues.Empty;

        return boolValue.Value ? CheckListValues.Positive : CheckListValues.Negative;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var checkListValue = value as CheckListValue;

        return checkListValue?.Value;
    }
}

ViewModel:

    public List<CheckListValue> CheckListValueList => CheckListValues.All;
    public CheckListProperties CheckListProperties { get; set; }

    public override void Init(object initData)
    {
        //Here CheckListProperties takes from DB on every load of Page
    }

    public class CheckListProperties
    {    
    public bool? PickerBool1 { get; set; }
    public bool? PickerBool2 { get; set; }
    public bool? PickerBool3 { get; set; }
    }

Когда я выбираю изСредство выбора работает хорошо, корректно изменяет bool и отображает текст, но это страница модификации и при загрузке, я должен увидеть уже выбранные ранее значения, но это не так.Оно пустое.

Вы знаете, почему это может быть?Потому что я понятия не имею.

Заранее спасибо, ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...