Existe uma maneira segura de desanexar / descarregar comportamentos sem efeitos colaterais?

9

No WPF e no WinRT, é bem conhecido que os comportamentos não chamam seu método Detach de maneira confiável. A única maneira de evitar um vazamento de memória é inscrever-se no evento Unloaded do AssociatedObject e desengatar todos os eventos ( exemplo ).

Até agora funciona.

Mas percebi (assim como alguém que comentou a entrada do blog que eu criei) que, dessa forma, os comportamentos descarregados nunca são anexados novamente. Tome um MenuFlyout por exemplo. Se houver um comportamento anexado a um MenuFlyoutItem, ele será descarregado quando o MenuFlyoutItem for fechado. Se você abrir o Menu novamente, ele não será reconectado.

Isso também acontece com outros UserControls. Eu "perco" comportamentos quando navego no meu WinRT App de uma página para outra e vice-versa, embora todos os controles sejam recriados novamente. Eu não vejo como eu posso usá-los em um aplicativo WinRT onde muitos controles são recriados, navegando ao redor.

Existe alguma solução conhecida?

    
por Amenti 08.07.2014 в 20:44
fonte

1 resposta

2

Um grande obrigado ao @Justin XL, a Microsoft atualizou o Behaviors SDK for UWP e tornou-o open source. As novas bibliotecas corrigem os problemas de navegação! :)

link

link

    
por Maximus 01.12.2015 / 04:30
fonte