Windows Phone 8 - утечка памяти вызывает команды интерактивности

В приложении Windows Phone 8 у меня есть ItemsControl с ItemTemplate у которых есть событие на кране:

 <interactivity:Interaction.Triggers>
     <interactivity:EventTrigger EventName="Tap"> 
         <command:EventToCommand Command="{Binding Mode=OneWay, Path=DataContext.NavigateToNextPage, Source={StaticResource Context}}" CommandParameter="{Binding}" />
     </interactivity:EventTrigger>
 </interactivity:Interaction.Triggers>-->

Контекст:

<ContentControl x:Key="Context" Content="{Binding}" />

RelayCommand:

public RelayCommand<MyItem> NavigateToNextPageCommand
{
    get { return _navigateToNextPageCommand ?? (_navigateToNextPageCommand = new RelayCommand<MyItem>(NavigateToNextPage)); }
}

ItemsControl определяет:

<ItemsControl Grid.Row="2" ItemsSource="{Binding DepositsItems}">

DepositsItems это список, который имеет около 200 элементов, и я иногда перезагружаю его. После нескольких перезагрузок у меня возникает утечка памяти и приложение закрывается. Я нашел, почему это происходит. Когда я удаляю событие Tap, все работает. Я думаю, что эта команда содержит ссылку на элемент, а GC не освобождает память.

Есть ли способ "отсоединить" команду от элемента? Я забочусь о модели MVVM.

Я нашел это: https://atomaras.wordpress.com/2012/04/23/solving-mvvmlights-eventtocommand-memory-leak-wp7/ но это не работает. Есть ли более простое решение?

ФИКСИРОВАННЫЙ

Я исправил это, изменив EventToCommand в InvokeCommandAction,

1 ответ

Решение

Я исправил это, изменив EventToCommand в InvokeCommandAction.

 <interactivity:Interaction.Triggers>
     <interactivity:EventTrigger EventName="Tap"> 
         <command:InvokeCommandAction Command="{Binding Mode=OneWay, Path=DataContext.NavigateToNextPage, Source={StaticResource Context}}" CommandParameter="{Binding}" />
     </interactivity:EventTrigger>
 </interactivity:Interaction.Triggers>
Другие вопросы по тегам