Files
Shrlalgo.RvKits/Melskin/Controls/ToolTip.xaml
2026-02-20 15:31:44 +08:00

79 lines
4.9 KiB
XML

<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:assists="clr-namespace:Melskin.Assists">
<Style TargetType="ToolTip">
<Setter Property="Background" Value="{DynamicResource BackgroundFloatingBrush}" />
<Setter Property="Foreground" Value="{DynamicResource TextPrimaryBrush}" />
<Setter Property="Padding" Value="8" />
<Setter Property="ToolTipService.InitialShowDelay" Value="0" />
<Setter Property="assists:ControlAssist.CornerRadius" Value="6" />
<Setter Property="HasDropShadow" Value="True" />
<Setter Property="Placement" Value="Bottom" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<!-- 推荐设置一个默认值 -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Grid>
<!-- 箭头 -->
<Path
x:Name="Arrow"
Fill="{TemplateBinding Background}"
Stretch="Uniform" />
<!-- 内容区域 -->
<Border
x:Name="ContentBorder"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
CornerRadius="{TemplateBinding assists:ControlAssist.CornerRadius}"
Effect="{DynamicResource PopupShadow}">
<ContentPresenter />
</Border>
</Grid>
<ControlTemplate.Triggers>
<!-- 当在上方显示时 (Placement=Top),箭头在下方 -->
<Trigger Property="Placement" Value="Top">
<Setter TargetName="ContentBorder" Property="Margin" Value="0,0,0,5" />
<Setter TargetName="Arrow" Property="Data" Value="M 0,0 L 5,5 L 10,0 Z" />
<Setter TargetName="Arrow" Property="Width" Value="10" />
<Setter TargetName="Arrow" Property="Height" Value="5" />
<Setter TargetName="Arrow" Property="VerticalAlignment" Value="Bottom" />
<Setter TargetName="Arrow" Property="HorizontalAlignment" Value="Center" />
</Trigger>
<!-- 当在下方显示时 (Placement=Bottom),箭头在上方 -->
<Trigger Property="Placement" Value="Bottom">
<Setter TargetName="ContentBorder" Property="Margin" Value="0,5,0,0" />
<Setter TargetName="Arrow" Property="Data" Value="M 0,5 L 5,0 L 10,5 Z" />
<Setter TargetName="Arrow" Property="Width" Value="10" />
<Setter TargetName="Arrow" Property="Height" Value="5" />
<Setter TargetName="Arrow" Property="VerticalAlignment" Value="Top" />
<Setter TargetName="Arrow" Property="HorizontalAlignment" Value="Center" />
</Trigger>
<!-- 当在左侧显示时 (Placement=Left),箭头在右方 -->
<Trigger Property="Placement" Value="Left">
<Setter TargetName="ContentBorder" Property="Margin" Value="0,0,5,0" />
<Setter TargetName="Arrow" Property="Data" Value="M 0,0 L 5,5 L 0,10 Z" />
<Setter TargetName="Arrow" Property="Width" Value="5" />
<Setter TargetName="Arrow" Property="Height" Value="10" />
<Setter TargetName="Arrow" Property="VerticalAlignment" Value="Center" />
<Setter TargetName="Arrow" Property="HorizontalAlignment" Value="Right" />
</Trigger>
<!-- 当在右侧显示时 (Placement=Right),箭头在左方 -->
<Trigger Property="Placement" Value="Right">
<Setter TargetName="ContentBorder" Property="Margin" Value="5,0,0,0" />
<Setter TargetName="Arrow" Property="Data" Value="M 5,0 L 0,5 L 5,10 Z" />
<Setter TargetName="Arrow" Property="Width" Value="5" />
<Setter TargetName="Arrow" Property="Height" Value="10" />
<Setter TargetName="Arrow" Property="VerticalAlignment" Value="Center" />
<Setter TargetName="Arrow" Property="HorizontalAlignment" Value="Left" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>