2014-04-20 4 views
1

Я новичок в WP8.
У меня проблема ...
Пример:
У меня есть 2 страницы в приложении для Windows-приложений, а на первой странице у меня 3 кнопки, а на второй странице у меня есть элемент управления TextBlock.
Как изменить его свойство текста на второй странице, нажав кнопки, которые находятся на первой странице?Как изменить свойство TextBlock в WP7 и WP8?

Я только знаю, как изменить текст, когда элементы управления находятся на той же странице:

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

ответ

0

Это, мне кажется, как плохая практика, но это может быть сделано путем получения и хранения экземпляра страницы с TextBlock в глобальной переменной и доступа к TextBlock из этого 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. Иметь правильную ViewModel для хранения данных:

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

Declare свойства типа выше ViewModel в App.xaml.cs, так что вы можете поделиться тем же данными по страницам приложений:

public MyViewModel MyViewModel = new MyViewModel(); 

Набора DataContext оба страниц в же ViewModel:

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

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

данных связываются TextBlock в стр.2:

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

Затем в обработчике события кнопки нажмите страницы 1, просто обновить ViewModel свойство:

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

Я новичок в WP8 ... есть еще один простой способ решить такую ​​проблему? я ищу об этом в Интернете, но для меня это сложно. Кто-нибудь есть идеи? – user3553509

 Смежные вопросы

  • Нет связанных вопросов^_^