吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

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 用上这个样式就可以了。

posted on 2012-05-12 13:29  _eagle  阅读(2638)  评论(0编辑  收藏  举报