我在GridView中的项目模板中有一个按钮,该按钮使用Command绑定在单击按钮时调用ViewModel上的方法。 ViewModel从未发布。模板:未在DataTemplate中使用命令绑定发布DataContext
<DataTemplate x:Key="ItemTemplate">
<Button HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,0,0,0"
Command="{Binding ElementName=LayoutRoot, Path=DataContext.NavigateToOtherPageCommand}"/>
</DataTemplate>
如果我删除命令属性或如果我注释掉公共财产(即从未BTW)在视图模型:
// public ICommand NavigateToOtherPageCommand { get; private set; }
没有泄漏。任何帮助,将不胜感激!
编辑:
一个解决方案,我想出了是把广播系统到位。我的ViewModel将在OnNavigatedTo中注册此单例(并在OnNavigatedFrom中取消注册)。命令绑定现在将转到该项目的上下文。我会在项目中放置一个ICommand属性,这个属性在发射时会传递给广播系统。然后广播系统将消息传递给ViewModel。感觉有点哈克,但我认为它会起作用。
指http://stackoverflow.com/questions/5927433/silverlight-datatemplate-memory-leak – daryal
不知道如何与 –