在我的项目中,我使用了XamEffects
软件包参考
enter link description here
<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
不适用于此程序包。只有Command才有效。
所以请帮帮我。 问候
答案 0 :(得分:1)
我认为不需要xamarin形式的任何软件包,您所需要做的就是
<StackLayout>
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Command="{Binding tryit}"/>
</StackLayout.GestureRecognizers>
<Label Text="hello touch me"/>
</StackLayout>
答案 1 :(得分:1)
下面是在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
}
希望有帮助!
答案 2 :(得分:1)
我在自述文件中指定了,您不能使用具有我的效果的手势:
重要提示:如果您需要一些具有触摸效果的手势,请不要使用 GestureRecognizer,但是使用命令,因为效果无法正常工作 在Xamarin.Forms中使用标准手势。
请在您的控件中使用commands:
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
}