2015-06-19 8 views
12

Sono nuovo in xamarin.forms ti prego di aiutarmi come posso aggiungere eventi click in Stack Layout o frameCome aggiungere l'evento Click in Stack Layout o frame

<Frame Grid.Column="0" BackgroundColor="#ffffff" Grid.Row="0" HasShadow="true" OutlineColor = "Black"> 
</Frame> 


<StackLayout Grid.Column="0" BackgroundColor="#313FA0" Grid.Row="0"> 
</StackLayout> 

risposta

31

È possibile aggiungere un TapGestureRecognizer al stackLayout in XAML come questo:

<StackLayout Grid.Column="0" BackgroundColor="#313FA0" Grid.Row="0"> 
    <StackLayout.GestureRecognizers> 
     <TapGestureRecognizer Tapped="OnTapped"/> 
    </StackLayout.GestureRecognizers> 
</StackLayout> 

Quindi è possibile implementare il OnTapped metodo nel codice dietro:

void OnTapped(object sender, EventArgs e) 
{ 
    // Do stuff 
} 

In alternativa, se si utilizza il modello MVVM e vorrebbe Associare il rubinetto per un ICommand nel ViewModel, che può essere raggiunto in questo modo:

<StackLayout Grid.Column="0" BackgroundColor="#313FA0" Grid.Row="0"> 
    <StackLayout.GestureRecognizers> 
     <TapGestureRecognizer Command="{Binding TapCommand}"/> 
    </StackLayout.GestureRecognizers> 
</StackLayout> 

Nel vostro ViewModel si avrebbe:

ICommand tapCommand = new Command(OnTapped); 

void OnTapped() 
{ 
    // Do stuff 
} 

ci sono alcuni veramente buoni guide sul sito Xamarin:

http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/gestures/#Using_Xaml

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/gestures/tap/

+0

questo è bello ... grazie – GvSharma

+0

thnx @pnavk;) risparmi il mio tempo: P –

1

Bene, grazie @pnavk, secondo quello che ho visto mi permette anche di condividere questo, le viste (Layout, frame, immagini ecc) che non hanno la integrato Su clic o fare clic su Eventi hanno lo stesso modo di affrontare l'evento click.

Come segue:

Per un'immagine:

<Image > 
       <Image.GestureRecognizers> 
          <TapGestureRecognizer Tapped="onImageCitizenReporterTapped" NumberOfTapsRequired="1" /> 
       </Image.GestureRecognizers> 
</Image> 

di un frame:

<Frame> 
        <Frame.GestureRecognizers> 
           <TapGestureRecognizer Tapped="onFrameCitizenReporterTapped" NumberOfTapsRequired="1" /> 
        </Frame.GestureRecognizers> 
    </Frame> 

Per stackLayout:

<StackLayout > 
        <StackLayout .GestureRecognizers> 
           <TapGestureRecognizer Tapped="onStackCitizenReporterTapped" NumberOfTapsRequired="1" /> 
        </StackLayout .GestureRecognizers> 
    </StackLayout > 

Cheers.

Problemi correlati