style部分
<Style x:Key="toolTipStyle" TargetType="ToolTip">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property = "HorizontalOffset" Value="37"/>
<Setter Property = "VerticalOffset" Value="24"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border Background="#262626" CornerRadius="4" Height="28" Width="48">
<Border Background="#262626" CornerRadius="4">
<ContentPresenter></ContentPresenter>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
HorizontalOffset是水平偏移量
VerticalOffset是垂直偏移量
用两个border的原因是我怕一个border无法实现圆角,不过讲道理一个就够了,最里面的ContentPresenter估计是必须填上的
如果不填上可能文字没有地方显示(大概)
应用style部分
<ToggleButton x:Name="MouseBtn" Style="{DynamicResource ToggleButtonStyle1}"
Click="Introduce_Click" Background="#333333" Margin="0,0,0,16"
ToolTipService.PlacementTarget="{Binding RelativeSource={RelativeSource Self}}"
ToolTipService.Placement="Top">
<ToggleButton.ToolTip>
<ToolTip Style="{StaticResource toolTipStyle}">
<ToolTip.Content>
<TextBlock Text="{DynamicResource STRING_MouseBtnTip}"
VerticalAlignment="Center" HorizontalAlignment="Center"
FontSize="12" Foreground="White"/>
</ToolTip.Content>
</ToolTip>
</ToggleButton.ToolTip>
<ImageSource="pack://application:,,,/Src/Doodle/ToolBar/Resource/Image.png"/>
</ToggleButton>
ToolTipService.PlacementTarget="{Binding RelativeSource={RelativeSource Self}}"
这句话把ToolTip的显示位置与当前的控件绑定,例如这里的ToggleButton,如果不设置的话默认情况下ToolTip与鼠标位置绑定
ToolTipService.Placement="Top"
这个设置ToolTip的位置为刚才设置的ToggleButton的Top