如何打开Silverlight 4中所有工具提示的自动换行功能?

Geo*_*rdy 6 silverlight coding-style tooltip word-wrap

在我的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"/>
Run Code Online (Sandbox Code Playgroud)

我想做的是让工具提示环绕以显示在多行上.实现此目的的一种方法是使用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>
Run Code Online (Sandbox Code Playgroud)

必须为我想要定义工具提示的每个控件执行此操作似乎需要做很多额外的工作.理想情况下,我想要做的是将工具提示定义为类似于第一个示例的字符串,然后将样式全局应用于所有工具提示,这将使工具提示环绕.所以在我的App.xaml中,我会定义这样的东西:

        <Style TargetType="ToolTip">
        <!-- Somehow make all tooltips wrap at a width of 200 -->
    </Style>
Run Code Online (Sandbox Code Playgroud)

关于我如何做到这一点的任何建议?

Ste*_*ock 14

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

<Style TargetType="ToolTip">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <TextBlock TextWrapping="Wrap" Width="200" Text="{Binding}" />
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用类似的东西:

<TextBox Text="Test2" ToolTipService.ToolTip="abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg " />
Run Code Online (Sandbox Code Playgroud)