2015-06-19 7 views
12

: Ich bin in xamarin.forms bitte helfen Sie mir, wie ich Click-Ereignis in Stapel-Layout oder RahmenWie Click-Ereignis in Stapel-Layout hinzufügen oder Rahmen

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


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

Antwort

31

hinzufügen können Sie einen TapGestureRecognizer zum StackLayout hinzufügen in XAML wie folgt aus:

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

Dann können Sie die OnTapped Methode im Code hinter implementieren:

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

Alternativ, wenn Sie das MVVM Muster verwenden und möchten den Hahn auf eine ICommand im Ansichtsmodell binden, die wie dies erreicht werden kann:

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

In Ihrem Ansichtsmodell müssten Sie:

ICommand tapCommand = new Command(OnTapped); 

void OnTapped() 
{ 
    // Do stuff 
} 

Es gibt einige wirklich gute Führer auf der Xamarin Webseite:

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

das ist nett ... danke – GvSharma

+0

thnx @pnavk;) du sparst meine zeit: P –

1

Nun, dank @pnavk, nach dem, was ich sah, erlauben Sie mir, auch diese zu teilen, die Ansichten (Layouts, Rahmen, Bilder usw.) die Ereignisse nicht den eingebauten OnClick haben, oder klicken Sie haben die gleiche Art und Weise, das Klick-Ereignis anzugehen.

Wie folgt:

für ein Bild:

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

für einen Rahmen:

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

Für StackLayout:

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

Prost.

Verwandte Themen