2010-03-30 35 views
8

Background ürününe bazı filigran metinleriyle basit bir TextBox birlikte çalışıyorum. Kodum, Philip Patrick's blog örneğine dayanmaktadır.WPF Bağlama Stil

Arka planda görüntülenen metin TextBox üzerinde ToolTip özelliğinden alınır, böylece çimdik çalışıyorum.

Şu anda bu işleri: TextBox arasında Background yılında ToolTip metnini görüntüler

<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> 

.

Ama Kaynak Stil dışarı kod parçasını taşırsanız bağlayıcı artık TextBox den ToolTip bilgi alır:

<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}"/> 

Herhangi ipuçları burada?

+1

Bir Stil yerine şablon kullanmak Could Jeremy burada ayrıntılı olarak nedir? –

cevap

1

TextBox'a denediğiniz şekilde erişemezsiniz, TextBlock'unuz TextBox'unuzun görsel hiyerarşisinde değildir. Bu yüzden TextBox'u bulamıyor. Filigranlı TextBox ile deneyebilirsiniz. Filigranlı Metin Kutusu Örneği için Check this.

1

Sadece aynı bir sorunla karşılaştım ve ToolTip'in PlacementTarget'ına bağlayarak çözdüm. Cevap Eğer {RelativeSource = {RelativeSource TemplatedParent}, Yol = araç ipucu Bağlama} kullanabilmesi link text