Как программно показать WPF / C # Windows.Control.ToolTip? - PullRequest
27 голосов
/ 01 октября 2009

Кажется, что для Windows.Control.ToolTip не существует метода типа .Show (), в том числе ToolTipService.

Ответы [ 7 ]

42 голосов
/ 16 декабря 2009

Что вам нужно сделать, это убедиться, что подсказка на элементе управления имеет тип подсказки. Затем вы можете установить для свойства IsOpen значение true следующим образом:

ToolTip tooltip = new ToolTip{ Content = "My Tooltip" };
NameTextBox.ToolTip = tooltip;
tooltip.IsOpen = true;    
2 голосов
/ 04 апреля 2018

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

Подписка должна быть сделана до IsOpen = true, и это должен быть асинхронный метод, чтобы избежать зависания пользовательского интерфейса.

var tooltip = new ToolTip { Content = "New tooltip text" };
MyControln.ToolTip = tooltip;
tooltip.Opened += async delegate (object o, RoutedEventArgs args)
{
    var s = o as ToolTip;
    // let the tooltip display for 1 second
    await Task.Delay(1000);
    s.IsOpen = false;
    // wait till the close tooltip animation finishes before changing to old tooltip text
    await Task.Delay(1000);
    s.Content = "Old tooltip text";
};
tooltip.IsOpen = true;
2 голосов
/ 01 октября 2009

Показывает всплывающую подсказку, что вы действительно хотите сделать. Подсказка имеет четкое значение для большинства пользователей и ожидает, что она исчезнет при перемещении мыши (и может вернуться при наведении курсора на рассматриваемый элемент).

Если ваша цель состоит в том, чтобы привлечь внимание к чему-либо, рассматривали ли вы какую-либо форму плавающего блока, который полностью находится под вашим контролем, WPF делает это легко!

1 голос
/ 13 июня 2018

Наконец я закончил с этим .. и он работает фантастически ..

            Popup myPopup = new Popup();
            myPopup.PlacementTarget = control; //FrameworkElement where you want to show this tooltip             
            myPopup.Placement = PlacementMode.Top;
            myPopup.PopupAnimation = PopupAnimation.Slide;

            myPopup.AllowsTransparency = true;
            TextBlock popupText = new TextBlock();
            popupText.Text = ErrorMessage; //Message you want to show
            popupText.Background = Brushes.AliceBlue;
            popupText.Foreground = Brushes.Red;
            //popupText.FontSize = 12;                
            popupText.TextWrapping = TextWrapping.Wrap;
            myPopup.Child = popupText;
            // popup1.CustomPopupPlacementCallback =
            // new CustomPopupPlacementCallback(placePopup);

            //myPopup.HorizontalOffset = control.ActualWidth - popupText.ActualWidth;
            control.ToolTip = myPopup;
            myPopup.IsOpen = true;
            myPopup.StaysOpen = false;
1 голос
/ 11 января 2016

ToolTip.Show() доступно для Windows Forms, а не для элементов управления WPF. Для WPF, если вы просто хотите отобразить всплывающую подсказку, когда мышь входит в область элемента управления, вам не нужно ToolTip.Show(), если вы пишете ToolTip="" в коде XAML (элемента управления, для которого требуется всплывающая подсказка) до события ToolTipOpening в XAML этого элемента управления. Например, для элемента управления Button:

<Button Name="exampleButton" Content="example" ToolTip="" ToolTipOpening="example_ToolTipOpening"/>

Подсказка должна отображаться автоматически каждый раз, когда мышь входит в область этого элемента управления. (Вы можете установить, какой текст отображать в функции события ToolTipOpening. Или вы можете опустить ToolTipOpening и установить текст в кавычках ToolTip="")

Надеюсь, это поможет.

0 голосов
/ 15 июня 2015

Если вы уже разрабатывали всплывающую подсказку в XAML, вы можете попробовать это следующим образом:

((ToolTip)Calendar01.ToolTip).IsOpen = true;
0 голосов
/ 01 октября 2009

Проверьте свойство IsOpen в классе ToolTipService.

...