在wpf中再次导航到页面时刷新功能

时间:2018-05-30 11:01:39

标签: c# wpf xaml

在我的wpf应用中,我有两个页面,page1page2

当用户第一次从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

2 个答案:

答案 0 :(得分:0)

构造函数中的代码只对每个Page2实例执行一次。

但您可以处理NavigatedNavigationService的{​​{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);
    }