나는 코드 뒤에 DependencyProperty
AppChrome
라고 (UserControl에서 파생 된) 연관된 ApplicationChrome XAML 개체에 대한 참조를 저장 년대에이 이는 XAML 개체 (Window
에서 파생 된) ChromeWindow
라는이 . ApplicationChrome의 XAML 파일에는 의 XAML에서 바인딩하려는 x:Name
개의 개체 (예 : TextBlock 및 Border)가 있습니다. ChromeWindow
의 루트는 x:Name
'는 XAML에서 rootWindow
같은 거라고, 그래서 나는 이러한 바인딩 중 하나 일 것이라고 생각 :XAML 멀티 레벨 바인딩 소스/경로 문제
{Binding ElementName=rootWindow, Path=AppChrome.CaptionTextBlock.Text, Mode=OneWay}
을하지만은 BindingExpression 경로 오류 등 그 재산의 불평'이다 CaptionTextBlock '(는 x : 아직
{Binding Source=AppChrome.CaptionTextBlock, Path=Text, Mode=OneWay}
그리고 행운을하는이 시간에 불만을 :
그래서 내가 intead 바인딩이 시도 ApplicationChrome AppChrome의 XAML에서 Name'd TextBlock의)는 유형의 객체를 찾을 수 없습니다 그들을 위해 노출 종속성 속성이없는 한BindingExpression
경로 오류 다시, 그러나 당신이 그 요소를 명명했다하더라도 유형
String
'솔루션'(그리고 저는이 용어를 매우 느슨하게 사용합니다)은 AppChrome의 각 XAML 요소에 대해 DP를 만들고 바인딩 경로를 통해 액세스하려고했는데 AppChrome의 Loaded() 메서드에서 DP를 적절한 요소를 이름으로 XAML 마크 업 (Markup)이 이것보다 더 똑똑해야합니다. 닷넷 3.5 SP1 – tpartee
Aaaand에서 그렇게 잘 작동하는 것을 상기합니다. 바인딩은 소스 속성에서 업데이트 알림을받지 못합니다. 굉장한. – tpartee
이것은 .NET 3.5 또는 다른 버전에서는 작동하지 않습니다. – Charlie