我有一个Windows Store项目如下:
class MyModel
{
private int _testVar;
public int TestVariable
{
get { return _testVar; }
set
{
_testVar = value;
NotifyPropertyChanged("TestVariable");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string property)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
我的约束如下:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<TextBlock Text="{Binding Path=TestVariable}" />
<Button Click="Button_Click_1"></Button>
</Grid>
背后的代码:
MyModel thisModel = new MyModel();
public MainPage()
{
this.InitializeComponent();
thisModel.TestVariable = 0;
DataContext = thisModel;
}
就这一点而言,绑定似乎有效,因为我得到的文本块显示为0.但是,当我处理按钮点击事件时,如下所示:
private void Button_Click_1(object sender, RoutedEventArgs e)
{
thisModel.TestVariable++;
}
我没有看到这个数字在增加。我在这里缺少什么?
答案 0 :(得分:2)
您的班级似乎没有实施INotifyPropertyChanged
。
我的意思是我希望看到class MyModel : INotifyPropertyChanged
答案 1 :(得分:1)
首先,视图模型必须实现INotifyPropertyChanged或更好地使用某种类型的MVVM库,如MVVM Light,这将对您有所帮助。
其次,我不确定,如果调用thisModel.TestVariable ++实际更新了值?尝试使用thisModel.TestVariable = thisModel.TestVariable + 1;