我是WP8的初学者
我有问题...
例如:
我在Windows Phone应用程序中有2页,在第一页上我有3个按钮,在第二页上我有一个TextBlock控件。
如何通过单击第一页上的按钮更改第二页上的文本属性?
我只知道当控件在同一页面上时如何更改文本:
private void button1_Click(object sender, RoutedEventArgs e)
{
textBlock1.Text= "Hello!";
}
答案 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!";
}