MVVM Light - Почему сборщик мусора. NET собирает / отключает мои привязки? - PullRequest
0 голосов
/ 29 мая 2020

Я не могу понять этого и не знаю, куда еще обратиться. В моем приложении, как и в других приложениях 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, которые больше не срабатывают после сборки мусора.

Любая помощь была бы потрясающей - я ломал себе голову из-за этого ...

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