あなたのPerson
クラスのメンバーName
とAge
INPCを自分で育てていますか?
またはのいずれかの値を更新Name
しAge
てビューに反映させる場合は、クラスViewModel
内で個別に変更されたプロパティを発生させる必要があります。Person
バインディングは問題ありませんが、ビューモデルからの変更はビューに通知されません。またUpdateSourceTrigger
、TextBox
デフォルトではがLostFocus
であることに注意してください。このように設定すると、入力時PropertyChanged
に文字列が更新さViewModel
れます。
簡単な例:
public class Person : INotifyPropertyChanged {
private string _name;
public string Name {
get {
return _name;
}
set {
if (value == _name)
return;
_name = value;
OnPropertyChanged(() => Name);
}
}
// Similarly for Age ...
}
これで、xamlは次のようになります。
<StackPanel DataContext="{Binding CurrentPerson}">
<TextBox Text="{Binding Name}" />
<TextBox Margin="15"
Text="{Binding Age}" />
</StackPanel>
または、@Kshitijによって提案されたようにバインドすることもできます。
<StackPanel>
<TextBox Text="{Binding CurrentPerson.Name}" />
<TextBox Margin="15"
Text="{Binding CurrentPerson.Age}" />
</StackPanel>
入力中にビューモデルを更新するには:
<StackPanel DataContext="{Binding CurrentPerson}">
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Margin="15"
Text="{Binding Age, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>