数据绑定到类的问题?

时间:2013-12-02 07:45:27

标签: c# xaml data-binding windows-phone

我遇到了将文本块数据绑定到另一个类中的自定义道具的问题,我做错了什么?

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";
            }
    }

}

2 个答案:

答案 0 :(得分:2)

您没有属性,只有公共字段,而数据绑定引擎仅适用于属性。

所以你需要改变你的课程:

public String homepage_subheading { get; set; }

如果您还希望通过更改属性通知用户界面,LanguageHelper应实施INotifyPropertyChanged interface并在修改属性时触发PropertyChange事件。

答案 1 :(得分: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#中的命名约定,所有属性都应首字母大写。