WPF Custom ToolTip - PullRequest
       52

WPF Custom ToolTip

0 голосов
/ 07 января 2019

Я использую .Net 4.7.2 и WPF 4.5.1

Я создал пользовательский элемент управления, который я использую в качестве всплывающей подсказки. Пользовательский элемент управления работает, и я могу применить его к элементу управления пользовательского интерфейса, например, к TextBox.

К сожалению, я не нахожу способа избавиться от типичной рамки общей подсказки, которая напоминает мне о кнопке.

Но посмотрите

Подсказка с рамкой

Я попытался переопределить стиль всплывающих подсказок по умолчанию, как показано в нескольких примерах здесь, на stackoverflow и других сайтах.

К сожалению, это не решает мою проблему.

Мой код xaml выглядит так:

<TextBox>
    <TextBox.ToolTip>
        <local:MyToolTip Text="{Binding MyToolTipText}" />
    </TextBox.ToolTip>
</TextBox>

Как удалить кнопку, похожую на рамку вокруг всплывающей подсказки?

Заранее спасибо

Пояснение:

Я пробовал два подхода:

первый:

<Style TargetType="{x:Type ToolTip}">

    <Setter Property="SnapsToDevicePixels"                        Value="True" />

    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate>

                <Border VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Background="Black">

                    <!-- other content -->

                </Border>


            </ControlTemplate>
        </Setter.Value>
    </Setter>

</Style>

второй:

<Style TargetType="{x:Type MyToolTip}">

    <Setter Property="SnapsToDevicePixels"                       Value="True" />

    <Setter Property="Control.Template">
        <Setter.Value>
            <ControlTemplate>

                <local:MyToolTip />

            </ControlTemplate>
        </Setter.Value>
    </Setter>

</Style>

Пользовательский элемент управления создается не из всплывающей подсказки, а из элемента управления

public class ToolTip : Control
{
    // ...
}

Как я уже упоминал, с кодом элемента управления нет проблем, я борюсь с проблемой стилей.

1 Ответ

0 голосов
/ 07 января 2019

Граница происходит от ControlTemplate из ToolTip. Измените ControlTemplate и вы избавитесь от границы:

<TextBox Text="text box text">
    <TextBox.Resources>
        <Style TargetType="ToolTip">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ToolTip">
                        <ContentPresenter />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </TextBox.Resources>
    <TextBox.ToolTip>
        <TextBlock Text="TEST" >
        </TextBlock>
    </TextBox.ToolTip>
</TextBox>

Так что это выглядит без и с Style:
enter image description here

...