每行不同的TapGestureRecognizer

问题描述 投票:0回答:1
<ContentView>
    <Grid InputTransparent="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"/>
            <RowDefinition Height="auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>

        <StackLayout Spacing="0"
                 Grid.Row="0"
                 VerticalOptions="Center">
            <Label Text="Algebra"/>
            <Label Text="number 1" />
        </StackLayout>
        <Switch IsToggled="True"
            VerticalOptions="Center"
                Grid.Row="1"
            Grid.Column="1"
                />

        <StackLayout Spacing="0"
                 Grid.Row="1"
                 VerticalOptions="Center">
            <Label Text="Arithmetics" />
            <Label Text="number 2" />
        </StackLayout>
        <Switch IsToggled="True"
            VerticalOptions="Center"
            Grid.Column="1"
                />
    </Grid>
</ContentView>

我有两行,每行有2个标签和一个开关。如何为每一行调用两个不同的Tap事件。像这样的东西:

<ROW1?.GestureRecognizers>
            <TapGestureRecognizer Tapped="OnTapped1" />
        </ROW?.GestureRecognizers>


<ROW2?.GestureRecognizers>
            <TapGestureRecognizer Tapped="OnTapped2" />
        </ROW?.GestureRecognizers>

我是新手,但是在网格中切换开关似乎不起作用,这很奇怪。

UI图片:UI

xaml xamarin events gesture tap
1个回答
0
投票

由于不能简单地将手势应用于整个网格行,

我决定只为我的UI使用Switch内置功能。

我所做的就是为每个Switch添加了两种不同的方法:

<Grid InputTransparent="True">
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>

    <StackLayout Spacing="0"
             Grid.Row="0"
             VerticalOptions="Center">
        <Label Text="Algebra"/>
        <Label Text="number 1" />
    </StackLayout>
    <Switch IsToggled="True"
            Toggled="method2"
        VerticalOptions="Center"
            Grid.Row="1"
        Grid.Column="1"
            />

    <StackLayout Spacing="0"
             Grid.Row="1"
             VerticalOptions="Center">
        <Label Text="Arithmetics" />
        <Label Text="number 2" />
    </StackLayout>
    <Switch IsToggled="True"
        Toggled="method2"
        VerticalOptions="Center"
        Grid.Column="1"
            />
</Grid>

© www.soinside.com 2019 - 2024. All rights reserved.