次のような Windows ストア プロジェクトがあります。
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++;
}
数が増えている様子はありません。ここで何が欠けていますか?