我在 GridView 的项目模板中有一个按钮,当单击该按钮时,该按钮使用命令绑定调用 ViewModel 上的方法。ViewModel 永远不会被释放。模板:
<DataTemplate x:Key="ItemTemplate">
<Button HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,0,0,0"
Command="{Binding ElementName=LayoutRoot, Path=DataContext.NavigateToOtherPageCommand}"/>
</DataTemplate>
如果我删除了 Command 属性,或者如果我在 ViewModel 中注释掉公共属性(即从不设置 BTW):
// public ICommand NavigateToOtherPageCommand { get; private set; }
没有泄漏。任何帮助,将不胜感激!
编辑:
我想出的一个解决方案是建立一个广播系统。我的 ViewModel 将在 OnNavigatedTo 中注册这个单例(并在 OnNavigatedFrom 中取消注册)。Command 绑定现在将通过项目的上下文。我会在项目中放置一个 ICommand 属性,该属性在触发时会将自身传递给广播系统。然后广播系统会将消息传递给 ViewModel。感觉有点hacky,但我认为它会起作用。