为什么我的绑定不起作用?

时间:2011-04-11 07:37:45

标签: silverlight

让类behine包含属性'Int32 Count'的xaml

我想将一些TextBlock绑定到'Count'值 - TextBlock.Text将具有'Count'的值。

所以我在xaml中写道:

 <TextBlock Text="{ Binding Path=Count }" />

在xaml背后的代码中,我添加到构造函数:

  DataContext = this;

但'Count'的每次更改都不会更改TextBlock的文本。

'Count'的代码

Int32 count;
public Int32 Count
{
      get
      {
           return count;
      }

      set
      {
           count = value;
      }

}

2 个答案:

答案 0 :(得分:4)

将INotifyPropertyChanged接口放置到您的班级:

public class MainPage : INotifyPropertyChanged
{

}

然后实施:

public event PropertyChangedEventHandler PropertyChanged;

protected void OnPropertyChanged(string propertyname)
        {
            var handler = PropertyChanged;
            if (handler != null)
                handler(this, new PropertyChangedEventArgs(propertyname));
        }

如果提供了通知视图在datacontext中发生了某些变化的机制,你会这样做:

public Int32 Count
{
      get
      {
           return count;
      }

      set
      {
           count = value;
           OnPropertyChanged("Count"); //This invokes the change
      }

}

但是,当然,我建议您使用MVVM模式分离设计和代码。这样,您可以将propertychanged实现为ViewModelBase类,然后为每个ViewModel继承该属性。

答案 1 :(得分:0)

您应该确保您的DataContext实现了INotifyPropertyChanged。然后你必须正确解雇财产变更事件。