2010-01-30 5 views
8

Tengo un ControlTemplate especial para algunos de mis Button s.WPF: Haciendo que todo el "bloque" de un camino haga clic en

<ControlTemplate TargetType="{x:Type Button}"> 
    <Path Name="ThePath" Fill="White" Stretch="UniformToFill" 
      Width="12" Height="12" Stroke="White" 
      StrokeThickness="4" 
      Data="M1.5,1.5 L10.5,10.5 M1.5,10.5 L10.5,1.5"/> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsFocused" Value="True"> 
      <Setter Property="Fill" Value="#afa" TargetName="ThePath"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

Esto funciona bien, pero ya que estoy usando un Path (en este caso, es sólo la forma de una grasa X), exactamente el camino se puede hacer clic, no el pequeño espacio entre las esquinas de la X. ¿Hay alguna cosa automática que pueda usar para hacer que todo el "bloque" de X se pueda hacer clic?

He considerado envolver el camino en un objeto rectangular, pero me gustaría asegurarme de que no me falta algo trivial.

+1

No le falta nada, así es como está hecho (envuelva en rectángulo, cuadrícula, lienzo o cualquier cosa con un fondo no nulo. –

Respuesta

16

Aviad P. es correcto. Esto es lo que hago:

<Border Background="Transparent"> 
    <Path ... /> 
</Border> 

Esto funciona porque cuando "hit prueba" para determinar dónde un clic del ratón se debe encaminar, el pincel "Transparente" se considera como si fuera un color normal.

+0

Una nota al margen: No es necesario * envolver * realmente la ruta en cualquier cosa, uno solo puede usar una segunda ruta en la plantilla que comprende la forma en la que se debe hacer clic y establecer 'Fill =" Transparent "' (Necesitaba hacer clic en una forma circular y no quería tocar con un 'Border' y 'CornerRadius', en mi caso). – Joey

+0

Esto solo funcionó para mí cuando agregué' IsHitTestVisible = "True" 'al' Border' –

Cuestiones relacionadas