2011-04-28 17 views
8

El título casi lo dice todo. ¿Hay alguna forma de hacer que una imagen en código XAML sea visible, no se pueda hacer clic (estoy tratando de hacer que el elemento detrás de ella reciba el clic) y que responda a los eventos de mouseover al mismo tiempo? La propiedad IsHitTestVisible desactiva el mouseover. Aquí hay un fragmento de código para referencia (en realidad está usando múltiples MultiDataTriggers adicionales, pero eso no es relevante aquí). Actualmente mouseover obras, sino accediendo a los que no (añadiendo IsHitTestVisible="True" hace que sea al revés)¿Haciendo clic en una imagen pero todavía responde al mouseover?

<Image Name="AutoUpdateStatus" 
     Stretch="UniformToFill" 
     Grid.Column="2" Grid.Row="0" 
     Height="32" Width="32" 
     HorizontalAlignment="Center" 
     Margin="68,2,61,2" 
     VerticalAlignment="Center"> 
    <Image.Style> 
     <Style> 
      <Setter Property="Image.Source"> 
       <Setter.Value> 
        <Binding Source="{x:Static res:AppResources.ok}"> 
         <Binding.Converter> 
          <Helpers:IconToImageSourceConverter /> 
         </Binding.Converter> 
        </Binding> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <MultiDataTrigger> 
        <MultiDataTrigger.Conditions> 
         <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True" /> 
         <Condition Binding="{Binding Path=AutoUpdateStatusIcon}" Value="ok" /> 
        </MultiDataTrigger.Conditions> 
        <Setter Property="Image.Source"> 
         <Setter.Value> 
          <Binding Source="{x:Static res:AppResources.ok_glow}"> 
           <Binding.Converter> 
            <Helpers:IconToImageSourceConverter /> 
           </Binding.Converter> 
          </Binding> 
         </Setter.Value> 
        </Setter> 
       </MultiDataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

¿En qué se trata la imagen? – Will

+0

Solo un '' regular. – Swooper

+0

Buena pregunta, y no tengo la respuesta, pero estoy pensando que no hay una manera fácil de hacer lo que estás preguntando. Si sabe qué habrá detrás de la imagen, podría hacer que capte un evento de vista previa para los clics del mouse. De lo contrario, recomendaría capturar el clic en la imagen, y luego usar el código, activar otro evento, posiblemente un evento personalizado simple en lugar del mismo clic del mouse. –

Respuesta

1

Una forma fácil es para alinear correctamente los elementos en función de orden z. Si puede mover la imagen hacia atrás y tener el elemento que desea hacer clic en la parte superior, puede hacer que esto funcione fácilmente. Además, haz que las cosas sean un poco más transparentes para que veas la imagen más que el elemento en la parte superior, eso haría que el UX sea perfecto.

Por supuesto, debe usar un contenedor como Grid que pueda agregar elementos múltiples en el plano de muestra.

-Fahad

Cuestiones relacionadas