20

長いテキストを正しく表示するようにToolTipmaxwidthプロパティを設定したいと思います。さらに、テキストの折り返しが必要です。私はこのスタイルを使用しました:

<Style TargetType="ToolTip">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding}"  MaxWidth="400" TextWrapping='Wrap' />
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
</Style>

このツールチップスタイルは、私の目的には問題ありません。ただし、独自のツールチップスタイルを持つ一部のコントロールには効果的ではありません。たとえば、次のボタンのツールチップは表示できません。

<Button>
    <Button.ToolTip>
        <StackPanel>
            <TextBlock Style="{StaticResource firstText}" Text="aaaaaaaaaaaaa"/>
            <TextBlock Style="{StaticResource secondText}" Text="bbbbbbbbbbbbb"/>    
            <TextBlock Bacground="Red" Text="ccccccccccccc"/>    
        </StackPanel>
    </Button.ToolTip>
</Button>

すべてのツールチップにテキストラッピングを使用してmaxwidthプロパティを設定したいと思います。この問題に対して何ができますか?

4

4 に答える 4

29

多くのことを実装する必要があるため、テンプレートの使用は避けています。それを行うためのよりエレガントな方法

<Style TargetType="ToolTip">
    <Style.Resources>
        <Style TargetType="ContentPresenter">
            <Style.Resources>
                <Style TargetType="TextBlock">
                    <Setter Property="TextWrapping" Value="Wrap" />
                </Style>
            </Style.Resources>
        </Style>
    </Style.Resources>
    <Setter Property="MaxWidth" Value="500" />
</Style>
于 2015-09-14T06:56:21.270 に答える
23

これは古い質問だと思いますが、この問題に対する最も明白で最も単純な解決策をまだ提案している人はいないようです。そのため、ここに追加すると思いました。

<Button>
    <Button.ToolTip>
        <ToolTip MaxWidth="400">
            <TextBlock Text="{Binding Binding}" TextWrapping="Wrap" />
        </ToolTip>
    </Button.ToolTip>
</Button>
于 2016-02-25T16:05:25.170 に答える
10

次のスタイルのツールチップは私にとって便利です。

<Style TargetType="ToolTip" x:Key="InternalToolTipStyle">
    <Setter Property="MaxWidth" Value="{Binding Path=(lib:ToolTipProperties.MaxWidth)}" />
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <ContentPresenter Content="{TemplateBinding Content}"  >
                    <ContentPresenter.Resources>
                        <Style TargetType="{x:Type TextBlock}">
                            <Setter Property="TextWrapping" Value="Wrap" />
                        </Style>
                    </ContentPresenter.Resources>
                </ContentPresenter>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

このスタイルでは、次のボタンのツールチップが正しく表示されます。

<Button>
<Button.ToolTip>
    <StackPanel>
        <TextBlock Style="{StaticResource firstText}" Text="aaaaaaaaaaaaa"/>
        <TextBlock Style="{StaticResource secondText}" Text="bbbbbbbbbbbbb"/>    
        <TextBlock Bacground="Red" Text="ccccccccccccc"/>    
    </StackPanel>
</Button.ToolTip>

于 2013-01-02T14:09:26.567 に答える
0

これを使って:

<Window.Resources>
 <Style TargetType="ToolTip" x:Key="TT">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding}"  MaxWidth="400" TextWrapping='Wrap' />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
    </Setter>
 </Style>
</Window.Resources>

<Button>
    <Button.ToolTip>
        <ToolTip Style="{StaticResource TT}">
  bbbbbbbbbbbbbbbbbbbdddddddddddddddddbbbmmmmmmhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
        </ToolTip>
    </Button.ToolTip>
</Button>

編集:

<Button>
    <Button.ToolTip>
        <RichTextBox>
           <FlowDocument>
              <Paragraph>
                This is flow content and you can <Bold>edit me!</Bold>
              </Paragraph>
           </FlowDocument>
</RichTextBox>
    </Button.ToolTip>
</Button>

参照:RichTextBoxの概要

于 2012-12-25T19:21:55.197 に答える