Привязка работает без INotifyPropertyChanged, почему?
Вот как мы обычно это делаем:
public class ViewModel : INotifyPropertyChanged
{
string _test;
public string Test
{
get { return _test; }
set
{
_test = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string property = "") =>
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(property));
}
Теперь наше свойство может использоваться несколькими элементами в представлении, например:
<TextBox Text="{Binding Test, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Text="{Binding Test}" />
Изменение значения вTextBox
обновит содержимоеTextBlock
, Так же как мы можем установить значение в модели представления и представление обновит его автоматически.
Если мы напишем модель представления, как это
public class ViewModel
{
public string Test { get; set; }
}
затемвид все еще работает (например, изменение значения вTextBox
будет обновлятьTextBlock
). Конечно, невозможно легко обновитьTest
значение от модели представления больше (больше никакого события, чтобы повыситься). Но мой вопрос о представлении:Почему вид способен работать? Создает ли он что-то более в фоновом режиме или это логика, которая проверяет что-то?