0

我有一个 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++;
    }

我没有看到这个数字在增加。我在这里想念什么?

4

2 回答 2

2

看来您的课程没有实现INotifyPropertyChanged. 我的意思是我希望看到class MyModel : INotifyPropertyChanged

于 2012-11-13T08:33:42.747 回答
1

首先,视图模型必须实现 INotifyPropertyChanged 或更好地使用某种 MVVM 库,如MVVM Light,这将对您有很大帮助。
其次,我不确定,调用 thisModel.TestVariable++ 是否真的更新了值?尝试使用 thisModel.TestVariable = thisModel.TestVariable + 1;

于 2012-11-13T08:45:56.930 回答