2013-12-02 5 views
1

У меня возникла проблема с привязкой текстового блока к пользовательской поддержке внутри другого класса, что я делаю неправильно?Проблема с привязкой данных к классу?

mainpage: 

    public partial class MainPage : PhoneApplicationPage 
{ 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
     InitializeLanguage(); 

    } 

    private void InitializeLanguage() 
    { 
     LanguageHelper lh = new LanguageHelper(); 

     // this.TitlePanel.DataContext = lh; 
     txtTitle.DataContext = lh; 
    } 
} 

привязки:

<TextBlock x:Name="txtTitle" 
        Text="{Binding homepage_subheading}" 
        Style="{StaticResource PhoneTextNormalStyle}" 
        Foreground="White" 
        Margin="12,0"/> 

LanguageHelper класс:

public class LanguageHelper 
{ 
    public String homepage_subheading; 

    public void changeLanguage() 
    { 
     if (true) 
     { 
      //english 
      homepage_subheading = "This is the top/sub Heading"; 
      } 
    } 

}

+0

Изменил ли ваши поля на собственность, решив вашу проблему? Или он все еще не работает? – nemesv

+0

ya sorry может только принять ответ через несколько минут, спасибо за помощь – Bohrend

ответ

2

Вы не собственность, но открытое поле, и Databinding двигатель работает только на свойства.

Таким образом, вы должны изменить свой класс:

public String homepage_subheading { get; set; } 

Если вы хотите также уведомить UI с изменениями ваших свойств вашей LanguageHelper должна осуществлять INotifyPropertyChanged interface и огнь PropertyChange события при изменении ваших свойств.

0

Вы должны объявить некоторые свойства зависимостей или использовать INotifyPropertyChanged, я хотел бы использовать свойство зависимостей:

public class LanguageHelper : DependencyObject { 
    public static DependencyProperty Hompage_subheadingProperty = 
    DependencyProperty.Register("Homepage_subheading", typeof(string), typeof(LanguageHelper)); 
    public String Homepage_subheading { 
    get { return (string) GetValue(Homepage_subheadingProperty);} 
    set { SetValue(Homepage_subheadingProperty, value);} 
    } 
} 

Примечания о именовании в C#, все свойства должны иметь первую букву заглавных.

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