ボタンがクリックされると、コマンド バインディングを使用して ViewModel のメソッドを呼び出す GridView の項目テンプレートにボタンがあります。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 でパブリック プロパティ (設定されていない) をコメント アウトした場合:
// public ICommand NavigateToOtherPageCommand { get; private set; }
漏れはありません。どんな助けでも大歓迎です!
編集:
私が思いついた解決策の 1 つは、放送システムを導入することです。私のViewModelはOnNavigatedToでこのシングルトンに登録します(そしてOnNavigatedFromで登録解除します)。Command バインディングは、アイテムのコンテキストに依存するようになりました。ICommand プロパティをアイテムに配置します。このプロパティは、起動時にブロードキャスト システムに渡されます。次に、ブロードキャスト システムがメッセージを ViewModel に渡します。少しハックな気がしますが、うまくいくと思います。