У меня есть объект XAML называется ChromeWindow
(производный от Window
), который имеет в его код-за DependencyProperty
называется AppChrome
, которая хранит ссылку на связанный объект ApplicationChrome XAML (производный от UserControl) , Файл XAML ApplicationChrome имеет несколько объектов x:Name
'(например, TextBlock и Border), к которым я хочу привязываться с XAML ChromeWindow
. Корень ChromeWindow
является x:Name
«d, как rootWindow
в XAML, так что я понял, один из этих привязок будет работать:XAML Multi-Level Binding Source/Path Issue
{Binding ElementName=rootWindow, Path=AppChrome.CaptionTextBlock.Text, Mode=OneWay}
Но что жалуется на ошибки BindingExpression пути таким образом, что свойство„CaptionTextBlock“(Х : Name'd TextBlock в XAML AppChrome в) не может быть найден на объект типа ApplicationChrome
Так что я попытался связывании Intead это:
{Binding Source=AppChrome.CaptionTextBlock, Path=Text, Mode=OneWay}
и до сих пор не удача, на этот раз жалобы снова BindingExpression
ошибки пути, но на этот раз, что он не может найти CaptionTextBlock
собственности на объекте типа String
«Решение» (и я использую этот термин очень слабо) состояло в том, чтобы просто сделать DP для каждого элемента XAML в AppChrome, к которому я хотел получить доступ через пути Binding, а в методе Loaded() для AppChrome - установить DP на соответствующий элемент по имени. Кажется, что XAML Markup должен быть более умным, чем это, и я помню, что это отлично работало .Net 3.5 SP1 – tpartee
Aaaand, так много для этого решения. Связи никогда не получают уведомления об обновлениях из своих исходных свойств. Fabulous. – tpartee
Это никогда бы не работало в .NET 3.5 или в любой другой версии. – Charlie