Comment afficher Programmatiquement un WPF / C# Windows.Contrôle.L'infobulle?

Il ne semble pas être un .Show() type de méthode pour le Windows.Contrôle.Bulle d'aide, y compris dans ToolTipService.

23
demandé sur Cœur 2009-10-01 13:48:13

7 réponses

ce que vous devez faire est de s'assurer que la ToolTip sur le contrôle est de type ToolTip. Ensuite, vous pouvez définir la propriété IsOpen à true comme suit:

ToolTip tooltip = new ToolTip{ Content = "My Tooltip" };
NameTextBox.ToolTip = tooltip;
tooltip.IsOpen = true;    
40
répondu Ray 2009-12-16 01:35:37

montre à un tooltip ce que vous voulez vraiment faire. Un tooltip a une signification claire pour la plupart des utilisateurs et une attente qu'il disparaît lors du déplacement de la souris (et peut revenir lorsque vous survolez l'élément en question).

si votre but est d'attirer l'attention sur quelque chose, Avez-vous considéré une forme de boîte flottante qui est entièrement sous votre contrôle, WPF rend cela facile!

2
répondu Ray Hayes 2009-10-01 09:53:06

ToolTip.Show() est disponible pour les formulaires Windows, pas pour les contrôles WPF. Pour WPF, si vous voulez simplement afficher le ToolTip lorsque la souris entre dans la zone de contrôle, vous n'avez pas besoin de ToolTip.Show() si vous écrivez ToolTip="" dans votre code XAML (du contrôle pour lequel vous voulez le ToolTip) avant le ToolTipOpening événement dans ce contrôle XAML. Par exemple, pour un bouton de contrôle:

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

L'Infobulletin doit alors être affiché automatiquement chaque fois que la souris entre dans la zone de cette contrôle. (Vous pouvez définir quel texte afficher dans la fonction d'événement ToolTipOpening. Ou vous pouvez omettre l' ToolTipOpening et définir le texte dans les guillemets de l' ToolTip="")

J'espère que cela vous aidera.

1
répondu Malka 2016-01-11 18:12:21

découvrez le IsOpen propriété ToolTipService classe.

0
répondu Konamiman 2009-10-01 09:51:59

si vous concevez déjà tooltip dans XAML, vous pouvez essayer de cette façon:

((ToolTip)Calendar01.ToolTip).IsOpen = true;
0
répondu zquanghoangz 2015-06-15 02:09:13

si vous souhaitez contrôler combien de temps le tooltip reste ouvert, vous pouvez vous abonner au Opened d'événement et de définir un délai avant de fermer l'infobulletin.

Abonnement doit être fait avant IsOpen = true et il doit être une méthode async pour éviter de raccrocher L'UI.

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;
0
répondu Anthony 2018-04-04 11:39:08

Enfin j'ai fini avec ça .. et cela fonctionne fantastique ..

            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;
0
répondu Moumit 2018-06-13 18:37:15