web-dev-qa-db-ja.com

スタックレイアウトまたはフレームにクリックイベントを追加する方法

私はxamarin.formsの初心者です。スタックレイアウトまたはフレームにクリックイベントを追加する方法を教えてください

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


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

次のように、XAMLのStackLayoutにTapGestureRecognizerを追加できます。

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

次に、コードビハインドでOnTappedメソッドを実装できます。

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

あるいは、MVVMパターンを使用していて、タップをViewModelのICommandにバインドする場合は、次のように実行できます。

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

あなたのViewModelには次のものがあります:

ICommand tapCommand = new Command(OnTapped);

void OnTapped() 
{
    // Do stuff
}

Xamarin Webサイトには、非常に優れたガイドがあります。

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/

50
pnavk

さて、ありがとう@ pnavk、私が見たものによれば、これを共有することもできます、ビュー(レイアウト、フレーム、画像など)組み込みのOnClickイベントまたはClickイベントがない場合でも、クリックイベントに取り組む方法は同じです。

次のように:

画像の場合:

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

フレームの場合:

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

StackLayoutの場合:

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

乾杯