如何在Silverlight 4中为所有工具提示启用自动换行?

6

在我的Silverlight 4应用程序中,我有一些很长的工具提示。默认情况下,这些工具提示会显示在一行上。例如:

        <TextBox Text="Test1" 
        ToolTipService.ToolTip="One tasdg asdg as da sdg asdg  asdg  asdg  asd gas dg a sdg a sdg a sd  a sd g asdasdgasdg    sadgasdgasdg  asdg  asdg  asd   as  a sd g a sdg      asd g asd g asd g asdgasdg     asdgasdg"/>

我希望能让工具提示换行并显示在多行上。实现这个目标的一种方法是使用 TextBlock 定义工具提示。例如:
        <TextBox Text="Test2"> 
        <ToolTipService.ToolTip>
            <TextBlock TextWrapping="Wrap" Width="200" Text="One tasdg asdg as da sdg asdg  asdg  asdg  asd gas dg a sdg a sdg a sd  a sd g asdasdgasdg    sadgasdgasdg  asdg  asdg  asd   as  a sd g a sdg      asd g asd g asd g asdgasdg     asdgasdg"/>             
        </ToolTipService.ToolTip>
    </TextBox>

我需要为每个控件定义工具提示,这似乎需要做很多额外的工作。理想情况下,我希望能够像第一个示例一样将工具提示定义为字符串,然后对所有工具提示应用全局样式,这将使工具提示自动换行。因此,在我的App.xaml中,我会定义以下内容:

        <Style TargetType="ToolTip">
        <!-- Somehow make all tooltips wrap at a width of 200 -->
    </Style>

有什么建议可以帮我完成这个任务吗?
1个回答

14

您可以为工具提示创建一个隐式样式,并将内容模板设置为适当的内容 - 例如:

<Style TargetType="ToolTip">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Width="200" Text="{Binding}" />
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

那么你可以使用类似以下的方法:

<TextBox Text="Test2" ToolTipService.ToolTip="abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg " />

1
太好了!谢谢Steve,这正是我在寻找的。我对这个解决方案做了一个小改动,使用了MaxWidth而不是Width,这有助于使工具提示的大小合适。 - Geoff Hardy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接