WPF - настройка подсказки MaxWidth
Я хотел бы установить свойство Maxwidth ToolTip для правильного отображения длинных текстов. Кроме того, мне нужна текстовая упаковка. Я использовал этот стиль:
<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 с переносом текста для всплывающих подсказок. Что я могу сделать для этой проблемы?
Ответы
Ответ 1
Следующий стиль ToolTip полезен для меня:
<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>
Ответ 2
Я избегаю использования шаблона, потому что многое должно быть реализовано. Таким образом, более элегантный способ сделать это
<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>
Ответ 3
Я понимаю, что это старый вопрос, но никто, кажется, не предложил наиболее очевидное и простое решение этой проблемы. Поэтому я думал, что добавлю его здесь:
<Button>
<Button.ToolTip>
<ToolTip MaxWidth="400">
<TextBlock Text="{Binding Binding}" TextWrapping="Wrap" />
</ToolTip>
</Button.ToolTip>
</Button>
Ответ 4
Используйте это:
<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>
Edit:
<Button>
<Button.ToolTip>
<RichTextBox>
<FlowDocument>
<Paragraph>
This is flow content and you can <Bold>edit me!</Bold>
</Paragraph>
</FlowDocument>
</RichTextBox>
</Button.ToolTip>
</Button>
см.: Обзор RichTextBox