2016-12-19 1 views
3

Я установил привязку в своей работе Xamarin.Android, где я привязываюсь к логическому свойству в моей модели просмотра, используя метод WhenSourceChanges(). Я также пробовал событие ValueChanged, и в обоих случаях прослушиватель событий запускает первые 3 или 4 раза, а затем он просто перестает работать. Значение определенно изменилось, я чередуюсь между true и false, и все же он просто перестает работать через некоторое время. Вы знаете, почему это может быть?MVVMLight Захват события ValueChanged тригерред только в 3-4 раза до остановки

this.SetBinding(() => this.Vm.ShowErrorMessage) 
.WhenSourceChanges(() => 
{ 
if (this.Vm.ShowErrorMessage) 
{ 
    this.ErrorMsg.Visibility = ViewStates.Visible; 
} 
else 
{ 
    this.ErrorMsg.Visibility = ViewStates.Gone; 
} 
}); 

Я использую MvvmLightLibs v5.3.0, развиваясь в VS2015 на машине Win10, а также тестирование на Android v4.2 Samsung Galaxy устройства.

+0

Вы замены ViewModel где-нибудь? Звучит так, как будто вы не используете режим просмотра, где установлено событие. – Default

ответ

1

Привязки слабые ссылки и будут собираться мусором, если вы их не сохраните. Please watch my presentation here.

В вашем случае, что вам нужно сделать, это что-то вроде этого:

private List<Binding> _bindings = new List<Binding>(); 

, а затем

_bindings.Add(this.SetBinding(…)); // (the rest remains the same). 
+0

Большое спасибо. :) Сохранение привязок решило мою проблему. – user2240342

+0

@LBugnion У меня с той же проблемой есть OP, и я сохраняю привязку в сильной ссылке. Это происходит только после вызова 'GC.Collect()'. На данный момент я просто обходим это с помощью 'ValueChanged'. Любые мысли по этому поводу? – jzeferino

Смежные вопросы