【问题标题】:Issue with databinding to class?数据绑定到类的问题?
【发布时间】:2013-12-02 07:45:27
【问题描述】:

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

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

}

【问题讨论】:

  • 将字段更改为属性是否解决了您的问题?还是还是不行?
  • 对不起只能在几分钟后接受答案,谢谢帮助

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


【解决方案1】:

你没有属性,只有公共字段,数据绑定引擎只对属性起作用。

所以你需要改变你的班级:

public String homepage_subheading { get; set; }

如果您还想将您的属性更改通知 UI,您的 LanguageHelper 应实现 INotifyPropertyChanged interface 并在您修改属性时触发 PropertyChange 事件。

【讨论】:

    【解决方案2】:

    你应该声明一些依赖属性或者使用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# 中的命名约定,所有属性的首字母都应大写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多