我在Windows Phone 8应用程序中使用Caliburn Micro,我想在用户退出应用程序之前按下后退按钮时提示用户。是的,我这样做有一个很好的理由!
我尝试了这段代码,但它在应用程序退出后被调用。
private void _navigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Back)
{
if (MessageBox.Show("Are you sure?", "Exit App", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
{
e.Cancel = true;
}
}
}
任何想法?
我认为你使用了一个错误的事件,我的建议是:
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
if (!NavigationService.CanGoBack)
{
if (MessageBox.Show("Are you sure?", "Exit App", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
{
e.Cancel = true;
}
}
}
在你的视图中使用
micro:Message.Attach="[Event BackKeyPress] = [Action OnGoBack($eventArgs)]"
和创建OnGoBack($eventArgs)在你的ViewModel
public void OnGoBack(CancelEventArgs eventArgs)
{
if (MessageBox.Show("Are you sure?", "Exit App", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
{
e.Cancel = true;
}
}