在我的 Xamarin 应用程序中,我正在使用工具提示效果(按照这个 article )。
有Help Icons
在页面上,当我点击它时,工具提示出现,如果我点击 Stacklayout 区域的任何地方,它就会消失,这意味着它工作正常。
有多个Help Icons
,并且我希望如果我单击任何帮助图标,此帮助图标的工具提示只会出现并消失打开的工具提示,因为现在可以同时打开多个工具提示。
为此,我添加了一个 TapGestureRecognizer
,当有人点击帮助图标时,关闭打开的工具提示。但是,我不知道为什么TapGestureRecognizer
甚至不会触发。
.xaml
<StackLayout x:Name="mainstacklayout">
<StackLayout.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Tapped"
NumberOfTapsRequired="1" />
</StackLayout.GestureRecognizers>
// Code
<Image Source="drawable/help.png"
WidthRequest="20"
HeightRequest="20"
effects:TooltipEffect.Position="Left"
effects:TooltipEffect.BackgroundColor="#222222"
effects:TooltipEffect.TextColor="#FFFFFF"
effects:TooltipEffect.Text="Tooltip"
effects:TooltipEffect.HasTooltip="True">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="Handle_Tapped"
NumberOfTapsRequired="1" />
</Image.GestureRecognizers>
</Image>
// Code
</StackLayout>
.xaml.cs public void Handle_Tapped(object sender, EventArgs args)
{
foreach (var c in mainstacklayout.Children)
{
if (TooltipEffect.GetHasTooltip(c))
{
TooltipEffect.SetHasTooltip(c, false);
TooltipEffect.SetHasTooltip(c, true);
}
}
}
最佳答案
XAML
声明每个图像的位置,至
effects:TooltipEffect.HasTooltip="False"
:<Image Source="drawable/help.png"
...
effects:TooltipEffect.HasTooltip="False">
如果这样做,识别器是否工作?如果是这样,那么您就成功了一半。在每个图像的声明中都这样做。这应该“禁用”所有工具提示。
2.
使用 TapGestureRecognizer 打开一个(并关闭其他):
public void Handle_Tapped(object sender, EventArgs args)
{
foreach (var c in mainstacklayout.Children)
{
// Turn off any that are on.
if (TooltipEffect.GetHasTooltip(c))
{
TooltipEffect.SetHasTooltip(c, false);
}
}
// Turn on the desired tooltip.
if (sender is View activeView)
{
TooltipEffect.SetHasTooltip(activeView, true);
// TODO: TooltipEffect source needs this method added;
// it has to find the effect for activeView, and call its `OnTap` method.
//TODO TooltipEffect.OnTap(activeView);
}
}
关于c# - 图像 TapGestureRecognizer 未在 Xamarin 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68298040/