如何在WP7和WP8中更改TextBlock的Text属性?

时间:2014-04-20 08:50:46

标签: c# windows-phone-7 windows-phone-8 textblock

我是WP8的初学者 我有问题...
例如:
我在Windows Phone应用程序中有2页,在第一页上我有3个按钮,在第二页上我有一个TextBlock控件。
如何通过单击第一页上的按钮更改第二页上的文本属性?

我只知道当控件在同一页面上时如何更改文本:

private void button1_Click(object sender, RoutedEventArgs e)
{
    textBlock1.Text= "Hello!";
}

2 个答案:

答案 0 :(得分:0)

在我看来,这似乎是不好的做法,但可以通过在全局变量中使用textblock获取和存储页面实例并从该实例访问文本块来完成.eg

public Page myFirstPage = null;

public partial class FirstPage : Page
  {
     FirstPage()
      {
           initializeComponent(); 
      } 

     void onLoadedEvent(Object Sender, Eventargs e)
     {
        myFirstPage = this;
     }
  }

然后您可以通过执行此操作来访问任何其他页面中的所有内容

myFirstPage.TextBlock1 = "FooBar";

答案 1 :(得分:0)

您可以用MVVM方式解决此问题。有一个合适的viewmodel来存储你的数据:

public class MyViewModel
{
    public String WelcomeText { get; set; }
}

App.xaml.cs中声明viewmodel上方类型的属性,以便您可以跨应用程序页面共享相同的数据:

public MyViewModel MyViewModel = new MyViewModel();

将两个页面的DataContext设置为相同的viewmodel:

public Page1()
{
    InitializeComponents();
    this.DataContext = App.MyViewModel;
}

public Page2()
{
    InitializeComponents();
    this.DataContext = App.MyViewModel;
}

第2页的数据绑定文本块:

<TextBlock Text="{Binding WelcomeText}"/>

然后在第1页的按钮单击事件处理程序中,只需更新viewmodel属性:

private void button1_Click(object sender, RoutedEventArgs e)
{
    App.MyViewModel.WelcomeText= "Hello!";
}