Почему задержка всплывающей подсказки не работает должным образом? - PullRequest
1 голос
/ 30 марта 2020

У меня есть ToolTip реализация для моего Button

<Button Grid.Row="0"
                                    ToolTip="{x:Static res:Resources.tooltip_add_clip_s_for_processing}"
                                    x:Name="Btn_path_to_clip_folder"
                                    Click="Btn_path_to_clip_folder_Click"
                                    Content="{x:Static res:Resources.add_dots}"
                                    Cursor="Hand"
                                    Margin="4"
                                    HorizontalAlignment="Stretch"/>

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

{ ссылка }

Итак, я создал такой класс под моими утилитами dir

namespace My_proj.Utils
{
    public static class ToolTipServiceHelper
    {
        static ToolTipServiceHelper() => ToolTipService.InitialShowDelayProperty
                .OverrideMetadata(
            typeof(FrameworkElement),
            new FrameworkPropertyMetadata(ToolTipService.InitialShowDelayProperty.DefaultMetadata.DefaultValue,FrameworkPropertyMetadataOptions.Inherits));
    }
}

и затем включаю это в моем UserControl

<UserControl x:Class="MMy_proj.UserControls.UCClipProcessing"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:converters="clr-namespace:My_proj.Converters"
             xmlns:res="clr-namespace:My_proj.Properties"
             xmlns:vm="clr-namespace:My_proj.Model.Binding;assembly=My_proj"
             Background="WhiteSmoke"
             mc:Ignorable="d" 
             ToolTipService.InitialShowDelay="2000"           <--- !!! This line
             d:DesignHeight="800" d:DesignWidth="1000">
...
</>

Но все равно это не работает, все же, когда я указываю на кнопку, я сразу вижу подсказку

Что я делаю не так?

1 Ответ

2 голосов
/ 30 марта 2020

Я не уверен, как должно работать решение из другого потока. Это ничего не изменило в моих тестах.

У меня сработало только одно:

public MainWindow()
        {
            InitializeComponent();

            ToolTipService.InitialShowDelayProperty
                .OverrideMetadata(typeof(FrameworkElement),
                    new FrameworkPropertyMetadata(2000));
        }

Очевидный недостаток: Задержка настроена не в XMAL, а в коде позади.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...