2013-06-21 11 views
7

Czy mogę utworzyć styl podpowiedzi, który można zastosować do wszystkich podpowiedzi dla każdego elementu sterującego.Wspólny styl etykiety narzędziowej w WPF

Próbowałem tego.

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

korzystania z tego stylu muszę umieścić oddzielny tag Tooltip w kontroli, na przykład do zastosowania podpowiedź do granicy

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

ale czy jest jakiś sposób, gdzie tooltipstyle dotyczy wszystkich kontroli z podpowiedzi wymienionego w tym samym tagu. np.

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

daj mi znać, jeśli potrzebujesz dalszych informacji. Dzięki w oczekiwaniu.

+1

Tak, można. Więc, o co chodzi? Wydajesz się być na dobrej drodze. – DHN

+0

@DHN, Nie mogę uzyskać treści (tekstu etykiety narzędzi) w stylu, to pokazuje pusty tekst w podpowiedzi – Hardik

Odpowiedz

3

Tak Twoje podejście będzie działać. Ale niewielka zmiana jest wymagana w szablonie kontroli. Zamień TextBlock na 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

Dlaczego on powinien to zrobić? Można również użyć 'TextBlock'. – DHN

+1

Tak Można użyć TextBox/TextBlock. Ale własność Content powinna być związana, a nie właściwość ToolTip. – Jawahar

+0

@XAMLLover, dziękuję za pracę. Ale nie mogłem zrozumieć, jak umieszczanie contentpresenter zamiast textblock sprawiają, że działa. Czy możesz podać jakieś zrozumienie? – Hardik

Powiązane problemy