如何自定义ToolTipService.ToolTip的模板?

时间:2009-11-24 19:32:54

标签: silverlight silverlight-3.0

Silverlight 为基本应用提供ToolTipService.ToolTip

但是,我想通过这样的方式自定义Template的{​​{1}}:

ToolTip

我希望<TextBlock Text="Hello" > <ToolTipService.ToolTip> <TextBlock Text="I can help you." /> <!--replace this with my template--> </ToolTipService.ToolTip> </TextBlock> 的{​​{1}}或Content属性能够从Style动态设置。

有这样的效果:

ToolTip

2 个答案:

答案 0 :(得分:11)

您无法以您想要的方式使用Style属性。 ToolTipService.ToolTip属性是附加属性。您不能使用Style资源为附加属性赋值。

但是,您可以使用Style资源设置ToolTip元素的样式。因此,您的TextBlock可能如下所示: -

<TextBlock Text="{Binding SomeProperty}">
    <ToolTipService.ToolTip>
        <ToolTip Style="{StaticResource TipHelp}" />
    </ToolTipService.ToolTip>
</TextBlock> 

现在在您的容器资源中,您可以使用如下样式: -

<Style x:Key="TipHelp" TargetType="ToolTip">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <TextBlock Text="{Binding SomeOtherProperty}" />
            </ControlTemplate>
        </Setter.Value>
    </Setter> 
</Style>

现在,您可以使用适当的Binding对象自定义ControlTemplate所需的ToolTip外观。

答案 1 :(得分:1)

有人遇到同样的问题,并在CodePlex中做了一个很好的项目。

有了这个,您甚至可以绑定ToolTip文本(这对我来说是一个showstopper,因为我通过绑定使用本地化)。

以下是链接:link text

工作真的很棒。