在我的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
答案 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);
}