Xamarin.forms Xamarin表单-将TapGestureRecognitor限制为单个tap
我在标签上有一个TapGestureRecognitor。使用以下命令处理程序(使用导航到下一页的FreshMVVM PushPageModel)时,所有这些都非常有用Xamarin.forms Xamarin表单-将TapGestureRecognitor限制为单个tap,xamarin.forms,Xamarin.forms,我在标签上有一个TapGestureRecognitor。使用以下命令处理程序(使用导航到下一页的FreshMVVM PushPageModel)时,所有这些都非常有用 public命令OpenDailyEntry { 得到 { 返回新命令(异步(e)=> { 等待corethods.PushPageModel(null); }); } } 问题是下一个屏幕需要一秒钟左右的时间才能出现,在此之前,用户可以点击多次,导致事件多次触发。在Android上,每次用户点击标签时,都会打开相同的页面 是
public命令OpenDailyEntry
{
得到
{
返回新命令(异步(e)=>
{
等待corethods.PushPageModel(null);
});
}
}
问题是下一个屏幕需要一秒钟左右的时间才能出现,在此之前,用户可以点击多次,导致事件多次触发。在Android上,每次用户点击标签时,都会打开相同的页面
是否有一种方法可以防止这种情况发生,而无需在第一次点击后禁用命令的全局标志?您可以为您的CanExecute方法添加第二个lambda 如果向页面导航服务添加属性,例如IsCurrentlyPushingPage,它跟踪推送到导航堆栈的开始和结束时间,则可以评估此属性并暂时停用OpenDailyEntry命令
public Command OpenDailyEntry
{
get
{
return new Command(async (e) =>
{
await CoreMethods.PushPageModel<DailyEntryPageModel>(null);
},
() =>
{
return CoreMethods.IsCurrentlyPushingPage == false;
}
);
}
}
public命令OpenDailyEntry
{
得到
{
返回新命令(异步(e)=>
{
等待corethods.PushPageModel(null);
},
() =>
{
返回CoreMethods.IsCurrentlyPushingPage==false;
}
);
}
}
public Command OpenDailyEntry
{
get
{
return new Command(async (e) =>
{
await CoreMethods.PushPageModel<DailyEntryPageModel>(null);
},
() =>
{
return CoreMethods.IsCurrentlyPushingPage == false;
}
);
}
}