2014-04-20 114 views
1

我是WP8的初學者。
我有一個問題...
例如:
我有2個頁面在我的Windows Phone應用程序,並在第一頁上我有3個按鈕,並在第二頁上我有一個TextBlock控件。
如何通過單擊第一頁上的按鈕來更改第二頁上的文本屬性?如何更改WP7和WP8中TextBlock的Text屬性?

我只知道如何更改文本時控件都在同一頁上:

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

回答

0

這似乎對我來說,壞的做法,但它可以通過與獲取和存儲實例的頁來完成文本塊中的一個全局變量,並從instance.eg

public Page myFirstPage = null; 

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

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

然後你就可以這樣做

myFirstPage.TextBlock1 = "FooBar"; 
訪問任何其他網頁的每一件事訪問文本塊
0

你可以用MVVM的方式解決這個問題。有一個適當的視圖模型來存儲你的數據:

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

聲明類型上述視圖模型的財產App.xaml.cs,這樣就可以在應用程序頁面共享相同的數據:

public MyViewModel MyViewModel = new MyViewModel(); 

同時設置頁面到的DataContext同視圖模型:

:在第2頁

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

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

數據綁定正文塊

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

然後在第1頁的按鈕單擊事件處理程序,只需更新視圖模型屬性:

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

我在WP8初學者...有沒有解決這樣的問題的另一個簡單的辦法?我在網上搜索它,但對我來說結果很困難。有人有什麼主意嗎? – user3553509

相關問題