C# PRISM 5:IConfirmNavigationRequest方法多次调用
我正在使用C# PRISM 5:IConfirmNavigationRequest方法多次调用,c#,wpf,prism,C#,Wpf,Prism,我正在使用PRISM和Unity扩展 WPF按钮命令调用以下代码并显示对话框: private void LaunchDialog() { Bootstrapper bootstrapper = new Bootstrapper(); bootstrapper.Run(); bootstrapper.MyShell.Owner = Application.Current.MainWindow; bootstrapper.My
PRISM
和Unity扩展
WPF按钮命令调用以下代码并显示对话框:
private void LaunchDialog()
{
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
bootstrapper.MyShell.Owner = Application.Current.MainWindow;
bootstrapper.MyShell.ShowDialog();
}
当我第一次单击LaunchDialog
时,PRISM
导航方法OnNavigatedFrom
和OnNavigatedTo
会调用一次。我关闭对话框
下次单击LaunchDialog
时,将调用PRISM
导航方法OnNavigatedFrom
和OnNavigatedTo
。我关闭对话框
如果我第三次单击LaunchDialog
,将三次调用PRISM
导航方法OnNavigatedFrom
和OnNavigatedTo
。我关闭对话框
我如何摆脱这种行为?因此,即使用户多次单击
LaunchDialog
,导航方法在第一次启动时也只调用一次。我刚刚添加了bootstrapper.Container.RemoveAllExtensions()以消除这种行为
private void LaunchDialog()
{
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
bootstrapper.MyShell.Owner = Application.Current.MainWindow;
bootstrapper.MyShell.ShowDialog();
bootstrapper.Container.RemoveAllExtensions();
}
我认为您的dialog实例没有得到正确处理。检查一些事件或任何静态引用。我是否正确理解,您创建了一个引导程序,并在已经运行的应用程序中单击按钮调用的方法中运行它?那么,这是一个完全错误的方法。