Когда вы привязываетесь к самому объекту Address, сам объект, то есть его идентичность, не меняется, даже если его свойства изменяются.Поэтому в этом случае WPF не знает, как обновить привязку.
Так что да, вам нужно привязать к уведомляющему свойству (или свойствам), а не ко всему объекту.Как вы говорите, один из способов сделать это - создать свойство DisplayText и вызывать событие PropertyChanged для этого свойства всякий раз, когда что-то, что влияет на отображаемый текст, изменяется.Другой способ - использовать несколько TextBlocks в горизонтально ориентированной StackPanel, каждая из которых привязана к определенному свойству, например,
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding HouseNumber}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding Street}" />
<TextBlock Text=", " />
<TextBlock Text="{Binding City}" />
</StackPanel>
. Преимущество второго подхода состоит в том, что он дает вам гибкость в пользовательском интерфейсе для изменения способа отображения адресовнапример, несколько строк, форматирование и т. д .;недостатком является то, что это становится сложным, если у вас есть условная логика, например, необязательный плоский номер или вторая адресная строка.