如何将HTML文本添加到工具提示WPF

时间:2019-12-01 09:59:27

标签: c# wpf wpf-controls

我有一个类似"<B>Objective</B> &cl To validate requirement"

的字符串

如何在工具提示中以HTML格式显示此内容

1 个答案:

答案 0 :(得分:0)

我一直想自己在某些应用程序中做到这一点,并认为我已经掌握了。

首先,您需要一个可以显示HTML的控件。 WebBrowser对于工具提示绝对是太多了,因此我进行了一些挖掘,发现HtmlRenderer.WPF nuget中包含的HtmlLabel。它非常轻巧,背景透明,自从我将其与Material Design Toolkit一起使用以来,这非常好。

您可以在此处找到HtmlRenderer.WPF nuget:https://www.nuget.org/packages/HtmlRenderer.WPF 或使用以下命令获取它:Install-Package HtmlRenderer.WPF -Version 1.5.0.6

第二,您可能想在多个地方使用此HTML工具提示。重用它的最简单方法(我认为)是制作样式。像这样:

<Window
    x:Class="HtmlRendererTest.Wpf.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:htmlControls="clr-namespace:TheArtOfDev.HtmlRenderer.WPF;assembly=HtmlRenderer.WPF"
    xmlns:local="clr-namespace:HtmlRendererTest.Wpf"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    Title="MainWindow"
    Width="800"
    Height="450"
    Background="#292929"
    mc:Ignorable="d">

    <Window.Resources>
        <Style TargetType="ToolTip">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <htmlControls:HtmlLabel Text="{TemplateBinding Content}" />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>

    <Grid>
        <Button
            Padding="10"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Content="Hover over me"
            ToolTip="{Binding HtmlTooltip}" />
    </Grid>

</Window>

此样式替换了显示工具提示并使用HtmlLabel代替显示的默认控件。

就是这样! 您现在可以将工具提示绑定到HTML文本。

这是一个演示:https://github.com/michaldivis/HtmlRendererTest

干杯,米哈尔。