В Windows Phone 8 приложения Я имею ItemsControl
с ItemTemplate
, которые имеют событие на кране:Windows Phone 8 - команды вызывает утечку памяти интерактивность
<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 Grid.Row="2" ItemsSource="{Binding DepositsItems}">
DepositsItems
Список, который содержит около 200 элементов, и иногда его перезаряжаю. После нескольких перезагрузок у меня происходит утечка памяти, и приложение закрывается. Я нашел, почему это происходит. Когда я удаляю событие Tap, все работает. Я думаю, что команда содержит ссылку на элемент, а GC не освобождает память.
Есть ли способ «отвязать» команду с элемента? Мне очень нравится шаблон MVVM.
Я нашел это: https://atomaras.wordpress.com/2012/04/23/solving-mvvmlights-eventtocommand-memory-leak-wp7/, но он не работает. Есть ли более простое решение?
FIXED
Я установил ее, изменив EventToCommand
к InvokeCommandAction
.
пожалуйста, напишите ваш Фикс в ответ – Eldho
Принять это как ответ @ darson1991 – Eldho