2016-05-05 5 views
0

Ich habe ein Bild, das ich den Hahn davon bekommen möchte (tatsächlich das Gitter, das es enthält, weil es größer ist). Aber das funktioniert nicht richtig, weil ich beim Berühren des Bildschirms sehr präzise sein muss, um den Knopf zu berühren, sonst wird es nicht funktionieren.Schwierig, einen Gegenstand angezapft zu bekommen - Erweitern Sie Trefferbereich

<Grid Grid.Column="0" Tapped="DrawerIcon_Tapped" HorizontalAlignment="Center" VerticalAlignment="Center"> 
      <Image Margin="5" x:Name="DrawerIcon" Source="/Assets/but_drawer.png" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center" > 
       <Image.RenderTransform> 
        <CompositeTransform ScaleX="0.5" ScaleY="0.5"/> 
       </Image.RenderTransform> 
      </Image> 
     </Grid> 

Gibt es eine Möglichkeit, den Bereich eines Elements zu erweitern, das beim Tippen berührt wird?

+0

Ich habe bereits versucht, das Bild größer zu machen (ScaleX und ScaleY zu 1.0 ändern), aber ich ändere nicht viel ... – facumedica

+0

Das Ereignis an den Container anzuhängen ist der beste Weg, dies zu tun, wie von @Barnstokkr vorgeschlagen – Eldho

Antwort

1

Die CompositeTransform macht nur das Bild größer, um die Trefferfläche größer machen Sie Folgendes tun:

  1. Wie du getan hast, umgeben das Objekt (Image) mit einem Grid
  2. Fügen Sie den Tapped Ereignis an die Grid
  3. Die Margin der Image wird den Trefferbereich bestimmen; Wenn Sie das also vergrößern, wird die Trefferfläche größer (oder alles, was die Grid größer macht).
  4. Schließlich und am meisten ärgerlich: Machen Sie die Background der Grid Transparent!

Code zu beheben, fügen Sie einfach Background="Transparent" und Sie können auch die Marge auf 10 erhöhen, wenn Sie mögen:

<Grid Grid.Column="0" Background="Transparent" Tapped="DrawerIcon_Tapped" HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <Image Margin="10" x:Name="DrawerIcon" Source="/Assets/but_drawer.png" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center" > 
      <Image.RenderTransform> 
       <CompositeTransform ScaleX="0.5" ScaleY="0.5"/> 
      </Image.RenderTransform> 
    </Image> 
</Grid 

Hoffnung, das hilft.

+0

Ich habe versucht Was Sie vorschlagen, aber es funktioniert nicht ... Nun, es funktioniert, aber nicht wie erwartet. Ich muss sehr vorsichtig und präzise sein, um es zum Laufen zu bringen. – facumedica

+0

Ich habe ein riesiges Rechteck darüber gelegt und es funktioniert auch nicht richtig ... Ich weiß nur nicht was falsch ist ... – facumedica

0

Ich erreiche es, indem ich ein transparentes Rechteck aus jedem Grid über dem Objekt, das ich angetippt werden möchte (nur unter dem Stamm Grid) und das Tapped-Ereignis anhängen. Scheinbar unter Grid s und Stackpanel s beeinflussen das Tapped Event irgendwie. Dies ist keine echte Lösung, nur ein Workaround. Vielleicht ist es ein Fehler.

Verwandte Themen