2010-03-30 4 views
8

Background에 워터 마크 텍스트가있는 간단한 TextBox을 함께 설정하려고합니다. 내 코드는 Philip Patrick's blog의 예제를 기반으로합니다.WPF 스타일로 바인딩

배경에 표시된 텍스트가 TextBoxToolTip 속성에서 검색되도록 조정하려고합니다.

현재이 작품 다음 TextBoxBackground에서 ToolTip 텍스트를 표시

<TextBox ToolTip="Type a name here..."> 
      <TextBox.Background> 
       <VisualBrush TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left"> 
        <VisualBrush.Visual> 
         <TextBlock FontStyle="Italic" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=ToolTip}"/> 
        </VisualBrush.Visual> 
       </VisualBrush> 
      </TextBox.Background> 
     </TextBox> 

합니다.

하지만 자원의 스타일에 밖으로 코드의 일부를 이동하는 경우 바인딩이 더 이상 TextBox에서 ToolTip 정보를 얻을 수 없습니다 :

<Grid> 
    <Grid.Resources> 
     <Style x:Key="WatermarkBackground" TargetType="{x:Type TextBox}"> 
      <Setter Property="Background"> 
       <Setter.Value> 
        <VisualBrush TileMode="None" Opacity="0.4" Stretch="None" AlignmentX="Left"> 
         <VisualBrush.Visual> 
          <TextBlock FontStyle="Italic" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type TextBox}}, Path=ToolTip}"/> 
         </VisualBrush.Visual> 
        </VisualBrush> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Grid.Resources> 

    <TextBox ToolTip="Type your name here..." Style="{StaticResource WatermarkBackground}"/> 

모든 팁을 여기를?

+1

당신이 스타일 대신 템플릿을 사용할 수 제레미 여기에 구체적으로 무엇입니까? –

답변

1

시도하는 방식으로 TextBox에 액세스 할 수 없으며 TextBlock이 TextBox의 시각적 계층 구조에 없습니다. 따라서 TextBox를 찾을 수 없습니다. Watermarked TextBox로 시도 할 수 있습니다. Check this 워터 마크가있는 텍스트 상자의 샘플

1

방금 ​​동일한 문제가있어서 ToolTip의 PlacementTarget에 바인딩하여 문제를 해결했습니다. 대답은 당신이 {RelativeSource = {RelativeSource TemplatedParent}, 경로 = 도구 설명을 바인딩} 사용할 수 있도록 link text