У меня есть такая сущность:
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), но мы не вызывали событие свойства change, но остальные два текстовых поля автоматически изменяются.
Когда кнопка нажимается, мы обновляем источник напрямую по коду, например:
((Person)DataContext).Name = "Godspeed";
Не обновляется. Поэтому я думаю, что если класс Person реализует INotifyPropertyChanged, это нормальное поведение, но теперь класс не реализует интерфейс, но он также обновляет интерфейс. Пожалуйста, сообщите мне причину, если у вас есть подсказка. Спасибо.