Давно я что-то не кодил на XAML, и, пытаясь обновить старое приложение, остановился на проблеме с привязкой. Я разделил все, чтобы подойти к минимальному примеру.
Вот мое тело XAML:
<Grid>
<TextBlock Text = "{Binding Path=PageTitle, ElementName=page, Mode=OneWay}"></TextBlock>
</Grid>
В моем коде есть это:
Public ReadOnly Property PageTitle As String
Get
Return "My page"
End Get
End Property
Я считаю, что это минимальный код (хорошо, исключая Mode=OneWay part, поскольку мы говорим о TextBlock), необходимый для привязки этого содержимого TextBlock к свойству на его базовой странице, но он не работает, и я придумал пустой TextBlock . Код Get моего свойства PageTitle никогда не вызывается.
Я даже дошел до реализации INotifyPropertyChanged, объявив:
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
а потом поднимаю RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("PageTitle")) в моем OnNavigatedTo коде, но безрезультатно.
Итак, какой простой вещи мне здесь не хватает?





Вы установили Name из Page?
Однако, если свойство определено в коде представления, вы можете использовать х: привязать без установки DataContext:
<TextBlock Text = "{x:Bind PageTitle, Mode=OneWay}" />
Спасибо, что указали на настройку имени страницы. Я определил его как
x:Name = "Page", but I was referring toElementName=page`, а XAML чувствителен к странице. Конечно,x:Bindтоже работает и является лучшим решением в этом примере.