2013-06-21 10 views
7

È possibile creare uno stile di descrizione che può essere applicato a tutti i suggerimenti per ogni controllo.Common Tooltip style in WPF

Ho provato questo.

<Style TargetType="{x:Type ToolTip}" > 
     <Setter Property="OverridesDefaultStyle" Value="true" /> 
     <Setter Property="HasDropShadow" Value="True" /> 
     <Setter Property="Foreground" Value="White" /> 
     <Setter Property="FontSize" Value="12" /> 
     <Setter Property="Placement" Value="Bottom" /> 
     <Setter Property="VerticalOffset" Value="0" /> 
     <Setter Property="Padding" Value="8" /> 

     <Setter Property="HorizontalContentAlignment" Value="Center" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ToolTip}" > 
        <StackPanel Margin="7,1" > 
         <Border Background="#FFF7F7CC" CornerRadius="1" > 
          <TextBlock Margin="1" Foreground="Black" HorizontalAlignment="Center" VerticalAlignment="Top" Text="{TemplateBinding ToolTip}"/> 
         </Border> 
        </StackPanel> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

per l'utilizzo di questo stile devo mettere un tag Tooltip separato in controllo, ad esempio, di applicare tooltip al confine,

<Border> 
    <Border.ToolTip> 
      <ToolTip ToolTip="This is tooltip text" /> 
    </Border.ToolTip> 
........ 
......... 
</Border> 

, ma c'è un modo in cui tooltipstyle si applica a tutti i controllo con tooltip menzionato nello stesso tag. es.

<Border BorderBrush="Transparent" Background="Transparent" Cursor="Help" ToolTip="This is Tooltip" > 
..... 
..... 
</Border> 

fammi sapere se sono necessari ulteriori dettagli. Grazie in Anticipazione.

+1

Sì, è possibile. Quindi, qual è il problema? Sembra che tu stia andando bene. – DHN

+0

@DHN, non riesco a ottenere il contenuto (testo Tooltip) in stile, è visualizzato testo vuoto in tooltip – Hardik

risposta

3

Sì Il tuo approccio funzionerà. Ma è necessario un piccolo cambiamento nel modello di controllo. Sostituisci TextBlock con ContentPresenter.

   <ControlTemplate TargetType="{x:Type ToolTip}" > 
        <StackPanel Margin="7,1" > 
         <Border Background="#FFF7F7CC" CornerRadius="1" > 
         <ContentPresenter Margin="1" HorizontalAlignment="Center" VerticalAlignment="Top" /> 
         </Border> 
        </StackPanel> 
       </ControlTemplate> 
+1

Perché dovrebbe farlo? Si può anche usare un 'TextBlock'. – DHN

+1

Sì È possibile utilizzare TextBox/TextBlock. Ma la proprietà Content deve essere associata, non la proprietà ToolTip. – Jawahar

+0

@XAMLLover, grazie al suo funzionamento. Ma non riuscivo a capire come mettere contentpresenter anziché textblock lo faccia funzionare. Potete fornire qualche comprensione per favore? – Hardik