SetValue для BindableProperty не вызывает событие PropertyChanged, когда установлено в ноль - PullRequest
0 голосов
/ 27 февраля 2019

в проекте Xamarin.Forms, который я разрабатываю, я создал NullableDatePicker, который работает с DateTime?значение.До XF 3.3 DatePicker мог устанавливать DateTime?свойство ViewModel для нуля.Это больше не работает с XF 3.5 Теперь, когда мой platformrenderer устанавливает для BindableProperty элемента управления XF значение null, свойство bound для модели представления не обновляется.Изменение значения на DateTime работает.

Поскольку поиск изменений между XF 3.3 и текущим XF 3.5 не принес каких-либо серьезных изменений для привязки к свету, я надеюсь, что кто-то здесь, на stackoverflow, может помочь.Я уже много раз искал возможную причину своей проблемы.

public class ViewModel {
    private DateTime? _date;
    public DateTime? Date{
        get => _date;
        set => SetProperty(ref _date, value);
    }
}

NullableDatePicker : DatePicker {
    public static readonly BindableProperty NullableDateProperty = BindableProperty.Create(nameof(NullableDate), typeof(DateTime?), typeof(NullableDatePicker), null, BindingMode.TwoWay);

public class DateTime? NullableDate
    {
        get { return (DateTime?)GetValue(NullableDateProperty); }
        set { SetValue(NullableDateProperty, value); }
    }
}

public class NullableDatePickerRenderer : DatePickerRenderer
{
    ...
    public void OnClearDateTimeSelection(){
        ((IElementController) Element).SetValueFromRenderer(NullableDatePicker.NullableDateProperty, null);
    ...
    }
}

1 Ответ

0 голосов
/ 27 февраля 2019

У меня была такая же проблема при обновлении с 3.4.0.1008975 до 3.5.X.Я пока не нашел причину этого, но мне также не понадобилось обновление, и это то, что я рекомендую вам.

Версия 3.5.X в основном добавляет привязываемые макеты в XF.Если вам это не нужно, я рекомендую вам перейти на версию 3.4.0.1008975, чтобы она работала.

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