在我的wpf应用中,我有两个页面,page1
和page2
。
当用户第一次从page1
转到page2
时,会自动创建新的page2
。
page1
中的看起来像是:
public static int someVar;
public Page1()
{
InitializeComponent();
}
.
.
.
// the user gives some value to "someVar"
void Next_btn(object sender , RoutedEventArgs e)
{
if (this.NavigationService.CanGoForward)
this.NavigationService.GoForward();
else
NavigationService.Navigate(new Page2());
}
page2
中的看起来像是:
public Page2()
{
InitializeComponent();
if(Page1.someVar==3)
DoSomething();
}
.
.
.
void Back_btn(object sender , RoutedEventArgs e)
{
if (this.NavigationService.CanGoBack)
this.NavigationService.GoBack();
}
我的问题是:
让我们说用户完成了以下操作:
用户已在page1
并放置someVar=2
,然后转到page2
。因此不会调用函数DoSomething()
。
之后他又回到了page1并更改了someVar=3
,然后再次导航到第2页,仍然不会调用函数DoSomething()
(但我需要将它称为这种情况),因为它'不是新 page2
。
如何解决以下情况而不必每次导航到新的page2
?
答案 0 :(得分:0)
构造函数中的代码只对每个Page2实例执行一次。
但您可以处理Navigated
中NavigationService
的{{1}}事件,并在事件处理程序中调用Page1
DoSomething()
方法。像这样:
Page2
答案 1 :(得分:0)
感谢@8mm
的指导,以下代码对我有用:
Page2 p2=new Page2();
void Next_btn(object sender , RoutedEventArgs e)
{
if (this.NavigationService.CanGoForward)
{
p2.DoSomething();
this.NavigationService.GoForward();
} else
NavigationService.Navigate(p2);
}