Это приложение 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 и отображает текст, но это страница модификации и при загрузке, я должен увидеть уже выбранные ранее значения, но это не так.Оно пустое.
Вы знаете, почему это может быть?Потому что я понятия не имею.
Заранее спасибо, ребята!