silverlight 自定义tooltip
在tooltip 中,默认是显示文字的,其实在silverlight 中,是可以用任意的 UserControl 做为tooltip 的
步骤如下:
1、创建ToolTip实例
2、将UserControl 赋于 ToolTip 的Content属性
3、使用ToolTipService.SetToolTip()方法,
方法原型为:
//
// 摘要:
// 设置对象的工具提示。
//
// 参数:
// element:
// 将附加属性写入到的对象。
//
// value:
// 要设置的值。
//
// 异常:
// System.ArgumentNullException:
// element 为 null。
public static void SetToolTip(DependencyObject element, object value);
其中,DependencyObject element是我们要附加自定义tooltip 的控件,object value 就是我们创建的ToolTip实例.
但是,会发现control作为tooltip后,外框背景是白色的,并且有边框。 我们可以定义 一个样式去掉。
<Style x:Key="ToolTipTransparentStyle" TargetType="ToolTip">
<Setter Property="Background" Value="#FFF7F8FA"/>
<Setter Property="Padding" Value="0,0,0,0"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFA3AEB9" Offset="0"/>
<GradientStop Color="#FF8399A9" Offset="0.375"/>
<GradientStop Color="#FF718597" Offset="0.375"/>
<GradientStop Color="#FF617584" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border x:Name="Root" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="2">
<Border BorderThickness="1" CornerRadius="1" Padding="{TemplateBinding Padding}">
<Border.Resources>
<Storyboard x:Key="Visible State"/>
<Storyboard x:Key="Normal State"/>
</Border.Resources>
<ContentPresenter Cursor="{TemplateBinding Cursor}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"/>
</Border>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在创建 ToolTip实例的时候,把ToolTip.Style 用上这个样式就可以了。