Я не могу понять этого и не знаю, куда еще обратиться. В моем приложении, как и в других приложениях C # / Xamarin. Android, есть встроенная сборка мусора. Эта сборка мусора вызывает нарушение некоторых привязок MVVM Light. Перед сборкой мусора все в порядке, но после сборки мусора преобразования SourceToTarget и TargetToSource больше не происходят, и TargetEvent больше не наблюдается. Следует отметить, что я использую AppCompat.
Вот мои объявления привязки на уровне активности и Spinner:
public static Binding<Dictionary<Guid, string>, string> _ageSpinnerBinding;
public StandardSpinnerControl AgeSpinner;
И вот мой экземпляр этих объектов:
AgeSpinner = (Controls.StandardSpinnerControl)RenderNumberSpinner(patientConfigurationDetail);
RenderCenteredControl(patientConfigurationDetail, layout, AgeSpinner);
_ageSpinnerBinding = BindingHelper.BindTwoWay<Dictionary<Guid, string>, string>(CurrentActivity, () => Vm.LocalAttributeBindings, () => AgeSpinner.ControlValue);
_ageSpinnerBinding.ConvertTargetToSource((value) => { return ConvertValueToLocalBinding(value, patientConfigurationDetail.Id); });
_ageSpinnerBinding.ConvertSourceToTarget((value) => { return ConvertLocalBindingToValue(value, patientConfigurationDetail.Id); });
_ageSpinnerBinding.ObserveTargetEvent(nameof(AgeSpinner.Changed));
_bindings.Add(_ageSpinnerBinding);
, где _bindings
- это набор привязок, доступных только для чтения, который существует в моем базовом действии.
Я не перехожу из Activity в Activity, когда это происходит, и просто сижу на той же странице в моем текущем Activity когда это произойдет. Я установил таймер и обнаружил, что _ageSpinnerBinding
после сборки мусора не равно нулю. Вроде бы просто отстраненный. У меня есть операторы печати в ConvertValueToLocalBinding
и ConvertLocalBindingToValue
, которые больше не срабатывают после сборки мусора.
Любая помощь была бы потрясающей - я ломал себе голову из-за этого ...