2010-06-25 5 views
7

Ich zeige einen Tooltip, wenn Maus auf Hilfe Bild schwebt.Kann ich den Tooltip für Mausklick-Ereignisse in WPF explizit anzeigen?

XAML ist unten angegeben:

<Image 
    x:Name="HelpImage" 
    Width="16" 
    Height="16" 
    Grid.Row="1" 
    Source="..\Images\ToolBar\Help.png" 
    Grid.Column="2"> 
    <Image.ToolTip> 
     <Grid 
      Background="LightGreen"> 
      <Grid.RowDefinitions> 
       <RowDefinition /> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 
      <StackPanel 
       Background="LightGreen" 
       Height="25" 
       Width="300" 
       Orientation="Horizontal" 
       HorizontalAlignment="Left" 
       VerticalAlignment="Top"> 
       <Image 
        VerticalAlignment="Stretch" 
        HorizontalAlignment="Stretch" 
        Width="24" 
        Height="24" 
        Source="/Images/Test.png" 
        Name="image1" /> 
       <TextBlock 
        FontFamily="Aharoni" 
        Margin="5" 
        FontSize="20" 
        FontWeight="Bold" 
        Foreground="Black" 
        TextWrapping="Wrap" 
        VerticalAlignment="Top" 
        Height="Auto" 
        HorizontalAlignment="Right" 
        Width="Auto"> 
         <Run 
          FontFamily="Calibri" 
          FontSize="14" 
          Foreground="DarkRed" 
          FontWeight="Bold" 
          Text="Bandwidth Base Value" /> 
       </TextBlock> 
      </StackPanel> 
      <TextBlock 
       Grid.Row="1" 
       Background="LightGreen"> 
       This is Help content</TextBlock> 
     </Grid> 
    </Image.ToolTip> 
</Image> 

Es Werkzeugspitze zeigt, wenn der Benutzer die Maus auf dem Steuerbild schwebt. Kann ich die QuickInfo explizit anzeigen, wenn der Benutzer auf das Bild klickt?

Bitte Hilfe !!

Antwort

9

Sie können das Öffnen der Werkzeugspitze erzwingen, indem Sie ToolTip.IsOpen auf true setzen. Sie können einen Verweis auf das ToolTip-Objekt abrufen, indem Sie beim Festlegen der ToolTip-Eigenschaft explizit einen Verweis erstellen. Statt

<Image.ToolTip> 
    <Grid> 
    ... 
    </Grid> 
</Image.ToolTip> 

Schreib

<Image.ToolTip> 
    <ToolTip> 
     <Grid> 
     ... 
     </Grid> 
    </ToolTip> 
</Image.ToolTip> 

Und dann in Ihrem MouseUp-Handler so etwas wie:

((ToolTip)((FrameworkElement)sender).ToolTip).IsOpen = true; 
+0

Vielen Dank für die Lösung .. Es hat für mich funktioniert. Aber wo sollte ich die IsOpen-Eigenschaft auf false setzen? Ich möchte die QuickInfo schließen, wenn der Benutzer irgendwo außerhalb der QuickInfo klickt. –

+0

Ich habe UserControl_MouseLeftButtonUp behandelt, in dem ich geschrieben habe ((ToolTip) ((FrameworkElement) this.HelpImage) .ToolTip) .IsOpen = false; Aber dieses Ereignis wird ausgeführt, sobald ich Maus auf Bildsteuerung mache. –

+0

@AshishAshu Ich habe IsOpen im ToolTip.Closed-Ereignis auf false gesetzt. –

1

Nein, Sie können den Tooltip nicht per Mausklick aufrufen. Anstatt Tooltip zu verwenden, können Sie das Popup-Steuerelement verwenden. Rufen Sie die Popup Control per Mausklick auf.

+0

Danke für die Antwort. Kann ich auch ein Popup-Steuerelement in Mouse Hover anzeigen, wenn wir den Tooltipp anzeigen? –

0
EventManager.RegisterClassHandler(typeof(Window), Mouse.MouseDownEvent, 
            new MouseButtonEventHandler((o, args) => 
            { 
             if (_popup.IsOpen) 
              _popup.IsOpen = false; 
            }));