你们Person
班的成员Name
和Age
自己养INPC吗?
如果要更新其中一个Name
或其中Age
的值并将其反映在视图中,则需要它们在类中ViewModel
单独更改属性。Person
绑定很好,但视图不会收到来自视图模型的更改通知。还请记住UpdateSourceTrigger
aTextBox
默认为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>