2010-06-25 10 views
7

Estoy mostrando una sugerencia de herramienta cuando el mouse se encuentra sobre la imagen de Ayuda.¿Puedo explicity mostrar información sobre herramientas en el evento Mouse Click en WPF?

El XAML es la siguiente:

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

Se muestra la punta de la herramienta cuando el ratón usuario se desplaza sobre el control de la imagen. ¿Puedo explicity mostrar información sobre herramientas cuando el usuario hace clic en la imagen?

Por favor ayuda !!

Respuesta

9

Puede forzar que la punta de la herramienta se abra configurando ToolTip.IsOpen en verdadero. Puede obtener una referencia al objeto ToolTip al construir explícitamente uno al establecer la propiedad ToolTip. En lugar de

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

escritura

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

Y luego en el controlador MouseUp hacer algo como:

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

Muchas gracias por la solución ... Funcionó para mí. Pero, ¿dónde debería establecer la propiedad IsOpen en falso? Quiero cerrar la información sobre herramientas si el usuario hace clic en cualquier lugar fuera de la información sobre herramientas. –

+0

He manejado UserControl_MouseLeftButtonUp en el que he escrito ((Información sobre herramientas) ((FrameworkElement) this.HelpImage) .ToolTip) .IsOpen = false; Pero este evento se ejecuta tan pronto como hago clic en el control de la imagen. –

+0

@AshishAshu Establecí IsOpen en falso en la información sobre herramientas. Evento cerrado. –

1

No, no se puede invocar la información sobre herramientas en el clic del mouse. En lugar de usar Tooltip, puede usar el control Popup. Invoque el Popup Control con un clic del mouse.

+0

Gracias por la respuesta. ¿Puedo mostrar también un control emergente en Mouse Hover igual que mostramos la información sobre herramientas? –

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