【发布时间】:2010-11-01 01:38:53
【问题描述】:
我是 MVVMLight 的新手,并已开始在我的 WP7 应用程序中使用它。我有一个注册 MessageDialogs 的视图/页面,然后我的 VM 发送消息以显示它。这很好用。但是,当您返回上一个屏幕(使用 WP7 后退按钮)然后再次进入页面(使用 AppBar 菜单项)时,消息会触发两次(每次查看页面时都会增加)。我认为 View 每次都在注册,并且旧版本正在订阅该消息,但我不确定它应该如何工作。
我尝试在 NavigatedFrom 事件中调用 VM.Cleanup 以确保旧消息在离开页面时未注册,但这没有帮助。这是我的代码:
查看:
public AboutPage()
{
InitializeComponent();
Messenger.Default.Register<DialogMessage>(this, msg => { var result = MessageBox.Show(msg.Content, msg.Caption, msg.Button); });
}
protected override void OnNavigatedFrom(NavigationEventArgs args)
{
ViewModelLocator.AboutViewModelStatic.Cleanup();
base.OnNavigatedFrom(args);
}
AboutViewModel:(代码被命令触发)
var message = new DialogMessage("Why does this fire multiple times?", DialogMessageCallback) { Button = MessageBoxButton.OK, Caption = "" };
Messenger.Default.Send(message);
这就是它的全部内容,但是每次您访问此页面时,它都会再次触发...我认为这与 Cleanup 有关,但我不确定它应该如何在 WP7 中工作...任何提示表示赞赏...
【问题讨论】:
标签: silverlight windows-phone-7 mvvm-light