为什么标签只改变一次

时间:2018-05-30 14:13:12

标签: c# wpf xaml

在我的wpf应用程序中有两个页面,第1页和第2页。

page1看起来像:

public static int someVar;
public Page1()
{
  InitializeComponent();
}
.
.
.
// the user gives some value to "someVar"
    Page2 p2 = new Page2();
    void Next_btn(object sender , RoutedEventArgs e)
    {

        if (this.NavigationService.CanGoForward)
        {              
            p2.ChangLabel();
            this.NavigationService.GoForward();
        } else
            NavigationService.Navigate(new Page2());
    }

Page2看起来像:

public Page2()
{
   InitializeComponent();
   ChangeLable();
}
public void ChangeLable()
{
 MessageBox.Show("I'm here");

 if(Page1.someVar==1)
   myLabel.Content = "blabla";
 else
   myLabel.Content = "bbbbbb";
}
.
.
.
void Back_btn(object sender , RoutedEventArgs e)
{
     if (this.NavigationService.CanGoBack)
        this.NavigationService.GoBack();
}  

让我们说用户完成了以下操作:

用户已在page1并放置someVar=1,然后转到page2。因此,函数ChangeLabel()会将标签更改为blabla。 之后他回到第1页并更改someVar=3,然后再次导航到第2页,此方案中的问题是,即使消息框显示,标签也不会更改为bbbbb

如何解决以下情况?

我的意思是为什么标签第二次没有更改为bbbb

1 个答案:

答案 0 :(得分:0)

您创建了Page2的两个实例。您应该将p2传递给NavigationService.Navigate,而不是创建新的:{/ p>

Page2 p2 = new Page2();
void Next_btn(object sender, RoutedEventArgs e)
{

    if (this.NavigationService.CanGoForward)
    {
        p2.ChangLabel();
        this.NavigationService.GoForward();
    }
    else
        NavigationService.Navigate(p2);
}