Как написать команду для StackLayout - PullRequest
0 голосов
/ 05 июля 2018

В моем проекте я использовал пакет XamEffects. введите описание ссылки здесь

<StackLayout effect:Commands.Tap="{Binding OnTapped}" Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal" effect:TouchEffect.Color="Gray" effect:EffectsConfig.ChildrenInputTransparent="True">
    <Image Source="ic_cont_downtick.png" HeightRequest="25" WidthRequest="25"/>
        <StackLayout Orientation="Vertical" WidthRequest="250" Spacing="0" Margin="10,0,0,0" VerticalOptions="Center">
            <Label Text="Downloaded Content" VerticalOptions="Center" TextColor="Black"/>
            <Label BackgroundColor="#455EEC" HorizontalOptions="Start" VerticalOptions="Start" WidthRequest="20" HeightRequest="4"/>
        </StackLayout>
    <Image Source="ic_rightarrow_1.png" HeightRequest="10" WidthRequest="10" VerticalOptions="Center" HorizontalOptions="End"/>
</StackLayout>

при нажатии на stackLayout приходится перемещаться по другой странице. Но TapGestureRecognizer не будет работать с этим пакетом. Будет работать только команда.

Так что, пожалуйста, помогите мне. Привет

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Ниже приведен код для привязки в классе ViewModel

private Command onTapped;
private const string OnTappedCommandPropertyName = "OnTapped";

public Command OnTapped
{
    get
    {
        return onTapped ?? (onTapped = new Command(ExecuteOnTappedCommand));
    }
}

public void ExecuteOnTappedCommand()
{
    //your code here
}

Надеюсь, это поможет!

0 голосов
/ 28 августа 2018

Я указал в Readme, вы не можете использовать жесты с моим эффектом:

Важно: если вам нужны жесты с сенсорным эффектом, не используйте GestureRecognizer, но Commands, потому что эффекты не работают правильно со стандартными жестами в Xamarin.Forms.

Пожалуйста, используйте команды в вашем контроле для этого:

effect:TouchEffect.Color="Gray" 
effect:Commands.Tap="{Binding TapCommand}"
effect:EffectsConfig.ChildrenInputTransparent="True"

В ViewModel создайте ICommand:

private ICommand _tapCommand;
public ICommand TapCommand => _tapCommand ?? (_tapCommand = new Command(TapExecute));

private void TapExecute()
{
   //something
}
0 голосов
/ 05 июля 2018

Я думаю, что для этого не нужно никаких пакетов в формах xamarin, все, что вам нужно сделать, это

<StackLayout>
    <StackLayout.GestureRecognizers>
        <TapGestureRecognizer Command="{Binding tryit}"/>

    </StackLayout.GestureRecognizers>
    <Label Text="hello touch me"/>
</StackLayout>
...