2016-08-01 8 views
1

Ich mache eine App mit einem Raster aus vielen Bildern, die Klickereignisse verarbeiten müssen. Ich bin in der Lage, ein einzelnes Bild klickbar mit diesem zu machen, aber ich brauche> 20 klickbare Bilder.Xamarin.Forms - Wie erstelle ich eine benutzerdefinierte Ansicht mit einem anklickbaren Bild?

 Image clickableImage = new Image(); 
     clickableImage.Source = ImageSource.FromFile("image.png"); 

     imageTap.Tapped += (object sender, EventArgs e) => 
     { 
      System.Diagnostics.Debug.WriteLine("Image clicked!"); 
     }; 

     clickableImage.GestureRecognizers.Add(imageTap); 

Gibt es eine Möglichkeit, etwas wie eine Angular2-Vorlage zu erstellen?

Antwort

0

Sie können in Ihrem freigegebenen Projekt selbst ein benutzerdefiniertes Steuerelement erstellen, das von Bild und Klick unterstützt und es in Ihrer gesamten Anwendung verwendet.

ClickableImage : Image 
{ 
     public ClickableImage() 
     { 
      Tapped += (sender, e) => 
      { 
       System.Diagnostics.Debug.WriteLine("Image clicked!"); 
      }; 
     } 
} 
+0

Danke, das hat den Trick! – IWillByte

+1

Mit http://stackoverflow.com/questions/6866347/lambda-anonymous-function-as-a-parameter konnte ich Funktionen als Parameter an die Tapped-Methode übergeben. – IWillByte

+0

Wenn Sie Verbesserungen haben, veröffentlichen Sie Ihre eigene Antwort, die sich auch für andere als hilfreich erweisen kann. –

0

Dank Rohit's answer konnte ich ein benutzerdefiniertes Steuerelement erstellen, die ich eine anonyme Funktion als Parameter nehmen geändert. Hier ist der Code:

class ClickableImage : Image 
{ 
    private TapGestureRecognizer tapGestureRecognizer = new TapGestureRecognizer(); 

    public ClickableImage(Action action) 
    { 
     tapGestureRecognizer.Tapped += (s, e) => 
     { 
      System.Diagnostics.Debug.WriteLine("Image Clicked w/ Lambda"); 
      action(); 
     }; 

     GestureRecognizers.Add(tapGestureRecognizer); 
    } 
}