2014-07-22 3 views
0

여러 날 동안 검색을 차단했기 때문에 포기하고 조언을 요청합니다.DataTemplate의 종속성 개체의 DP에 제어를 묶는 바인딩

<TextBox x:Name="FilterValueTextBox" 
       Grid.Column="1" 
       BorderThickness="1" 
       BorderBrush="{Binding TextBoxBorderBrush}" 
       VerticalAlignment="Stretch" 
       IsEnabled="{Binding FilterTypeValid}" 
       Background="{Binding TextBoxBackgroundBrush}" 
       VerticalContentAlignment="Stretch" 
       Text="{Binding RawText}" 
       SnapsToDevicePixels="True"> 
    <controls:OnScreenKeyboardControl.KeyboardDescriptor> 
        <controls:KeyboardDescriptor TextBoxRef="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorLevel=1, AncestorType={x:Type TextBox}}}" /> 
    </controls:OnScreenKeyboardControl.KeyboardDescriptor> 
</TextBox> 

KeyboardDescriptor 유형 TextBox의 종속성 속성 "TextBoxRef"를 포함하는 DependencyObject입니다 :

나는 다음과 같은 DataTemplate을 수 있습니다.

정확히이 메커니즘은 데이터 형식 내에서 바인딩이 발생해야하는이 특별한 경우를 제외하고는 내 응용 프로그램의 모든 곳에서 작동합니다.

처음에는 시각적 또는 논리적 트리의 일부가 아니므로 ELementName 및 RelativeSource Binding이 실패해야한다는 수십 개의 기사를 읽었습니다.

분명히 나는 ​​이것을 확실하게 확인할 수있었습니다. 위와 같이 "양방향 바인딩 (이 경우 기본값)은 경로 또는 x- 경로가 필요합니다"라는 템플릿 인스턴스화에 예외가 발생합니다. ... 위의 바인딩 시도가 없으면 예외는 사라지지만 물론 연결 고리는 확립되지 않았다.

내 질문은 다음과 같습니다. 어떻게 든 들어있는 TextBox를 propertie의 DP에 연결된 키보드 설명자에 대한 참조로 전달할 수 있습니까?

답변

0

독자적으로 작성되었습니다. xaml 이상으로 변경 :

<TextBox x:Name="FilterValueTextBox" 
       Grid.Column="1" 
       BorderThickness="1" 
       BorderBrush="{Binding TextBoxBorderBrush}" 
       VerticalAlignment="Stretch" 
       IsEnabled="{Binding FilterTypeValid}" 
       Background="{Binding TextBoxBackgroundBrush}" 
       VerticalContentAlignment="Stretch" 
       Text="{Binding RawText}" 
       SnapsToDevicePixels="True"> 
    <controls:OnScreenKeyboardControl.KeyboardDescriptor> 
        <controls:KeyboardDescriptor TextBoxRef="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=.}" /> 
    </controls:OnScreenKeyboardControl.KeyboardDescriptor> 
</TextBox> 

그래도 고맙습니다. 희망이 언젠가 다른 사람을 도울 수 있기를 바랍니다.