почему метка изменилась только один раз - PullRequest
0 голосов
/ 30 мая 2018

В моем приложении wpf есть две страницы, page1 на страницу 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 голосов
/ 30 мая 2018

Вы создаете два экземпляра Page2.Вы должны передать p2 в NavigationService.Navigate вместо создания нового:

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

    if (this.NavigationService.CanGoForward)
    {
        p2.ChangLabel();
        this.NavigationService.GoForward();
    }
    else
        NavigationService.Navigate(p2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...