【问题标题】:Prism cancel navigation WPF棱镜取消导航 WPF
【发布时间】:2020-08-03 10:55:25
【问题描述】:

我有一个类似的导航请求

regionManager.RequestNavigate("MainRegion", "Login");

在我必须在被调用的视图模型中进行一些检查(比如检查文件是否存在)之后。如果检查失败,那么我必须取消导航请求。请告诉我该怎么做?

public LoginViewModel(IRegionManager rm)
{ 
    if(!File.Exists("PathToFile")) 
    {
        //cancel navigation
    }
}

【问题讨论】:

标签: c# wpf mvvm prism


【解决方案1】:

您必须在视图模型中实现IConfirmNavigationRequest 才能启用取消。在ConfirmNavigationRequest 方法中,将true 传递给continuationCallback 以继续导航,否则false

public class LoginViewModel : BindableBase, IConfirmNavigationRequest
{
   public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
   {
      continuationCallback(File.Exists("PathToFile"));
   }

   // ...other members.
}

【讨论】:

  • 我有一个基类 ViewModelBase,我在其中实现 IConfirmNavigationRequest 接口。在 Login 视图类中,我重写了 ConfirmNavigationRequest 方法,但仅当我在 LoginView 类的某处发出请求时才会调用它。
  • @Clashko 因为你的方法不是virtual?
  • @Clashko 您能否在您的问题中提供您的基本实现和LoginView 实现作为上下文?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-10
  • 2012-03-16
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
相关资源
最近更新 更多