我有一个这样的实体:
public class Person
{
public string Name { get; set; }
public Person()
{
Name = "Godspeed";
}
}
然后我在 XAML 中有三个文本框和一个按钮:
<Window x:Class="WpfApplication19.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication19"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:Person />
</Window.DataContext>
<StackPanel>
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" />
<TextBox Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" />
<Button Click="Button_Click">Click</Button>
</StackPanel>
</Window>
奇怪的是,实体“Person”并没有实现 INotifyPropertyChanged,但是当一个文本框被更改时,它会修改源(Person 对象),但是我们没有引发属性更改事件而是其余两个文本框自动改变。
当按钮点击时,我们直接通过如下代码更新源代码:
((Person)DataContext).Name = "Godspeed";
它不更新。所以我认为如果Person类实现了INotifyPropertyChanged,这种行为是正常的,但是现在该类没有实现接口,但它也更新了接口。如果您有任何线索,请告诉我原因。谢谢。