Can I explicity show tooltip on Mouse Click event

2019-01-26 09:13发布

问题:

I am showing a Tool Tip when Mouse hovers on Help image.

The xaml is given below:

 <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>

It shows the Tool Tip when user mouse hovers on the image control. Can I explicity show ToolTip when user clicks on the image ?

Please Help!!

回答1:

You can force the tool tip to open by setting ToolTip.IsOpen to true. You can get a reference to the ToolTip object by explicitly constructing one when setting the ToolTip property. Instead of

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

write

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

And then in your MouseUp handler do something like:

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


回答2:

No you can't invoked the tooltip on mouseclick. Instead of using Tooltip, you can use Popup control. Invoke the Popup Control on mouse click.



回答3:

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