2009-12-08 6 views
0

Silverlight는 요소 바인딩에 요소를 제공합니다. 나는 아래와 같은 XAML이부모 요소 값에 값을 바인딩하는 방법은 무엇입니까?

:

<TextBlock Text="{Binding ABC}" > 
    <ToolTipService.ToolTip> 
    <local:MyControl Title="{Binding ...}" /> 
    </ToolTipService.ToolTip> 
</TextBlock> 

내가 부모 TextBlock의 텍스트와 동일한 데이터에 MyControl 제목을 바인딩 할을하지만 X 설정하지 않으려는이 사건에 적용하는 방법 : 부모 Textblock의 이름입니다.

<local:MyControl Title="{Binding ABC}" /> 

이 두 번 호출 될 수 있습니다 "{ABC 바인딩}"이 바인딩을 위해, 내 경우로,이 ValurConverter을 :

나는 동일한 데이터 소스에 제목을 결합하는 하나 개의 솔루션이 알고있다. 나는이 방법을 사용하고 싶지 않다.

답변

0

상대 소스를 지정하여 바인딩을 시도해보십시오

{Binding RelativeSource={RelativeSource 
FindAncestor, AncestorType={x:Type 
TextBlock}}} 

이것은 MyControl 이전 최초의 "TextBlock의"유형에 결합한다.

업데이트 : 현재 FindAncestor RelativeSource (2009 년 12 월 8 일 기준)는 WPF에서만 작동하며 Silverlight에서는 작동하지 않습니다.

그러나 실버 라이트의 미래 버전으로 FindAncestor을 가져 실버 팀과 함께 열려 요청 (2009년 8월 3일)이 : Link

이 주제에 대한 마이크로 소프트의 워드 :

We are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com) (8/4/2009)


현재 가지고있는 최상의 옵션은 다음과 같습니다. Link

그림과 같이 MyControl을 TextBox 템플릿. 다음 코드를 사용하여 제목을 바인딩 할 수 있습니다.

{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Text} 

희망이 있습니다.

+0

게시하기 전에 같은 것을 테스트하고 이상하게 작동하지 않습니다. 마치 툴팁이 텍스트 블록의 자손이 아닌 것처럼 말입니다. – Andrew

+0

감사합니다. 위의 구문에서 다음 오류가 표시됩니다. 'AncestorType'속성이 XML 네임 스페이스 'http://schemas.microsoft.com/winfx/2006/xaml/presentation'의 'RelativeSource'형식에 없습니다. \t 'Type'태그는 XML 네임 스페이스 'http://schemas.microsoft.com/winfx/2006/xaml'에 없습니다. – KentZhou

+0

WPAM Silverlight에서이 XAML을 사용하고 계십니까? – Gineer

관련 문제