[英]How can I check if the Unfocus event for an Entry was triggered by a button Click in Xamarin.Forms?
在我的代码中,每当Entry
失去焦点时,我都需要将数据保存到我的数据库中,除非它是由按下Button
触发的。 我注意到在Xamarin
中,当一个Entry
被聚焦并单击一个按钮时,首先为该条目触发一个 Unfocus 事件,然后是Button
Focus
事件,然后是Button
Clicked
事件。
我需要一些方法来确定是否由于单击Button
而触发了Entry
的 Unfocus 事件。 有没有办法做到这一点?
“我需要一些方法来确定是否由于单击按钮而触发了条目的 Unfocus 事件。有什么方法可以做到这一点吗?”
不是直接的。 这是一种推断方法。
在 Unfocus 事件中设置一个标志,并启动一个一次性计时器。 您必须进行试验才能确定什么时间间隔效果很好。 我的猜测是在 200 毫秒到 500 毫秒之间。
在按钮焦点事件中,清除该标志和/或停止计时器。
如果计时器 Elapsed 事件触发,而按钮 Focus 事件没有停止它(或清除标志),那么您发现 Unfocus 不是由于 Button。
那时,采取所需的行动。
您可以通过检查“已按下”来知道按钮是否被单击
这是我的示例代码,您可以参考:
圣诞节:
<ContentPage.Content>
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
<Entry x:Name="myentry" Unfocused="E_UFEvent"/>
<Button x:Name="mybutton" Clicked="Onbutton_Clicked" Text="Click me"/>
</StackLayout>
</ContentPage.Content>
代码隐藏:
void E_UFEvent(Object sender, EventArgs e)
{if (mybutton.IsPressed)
{
DisplayAlert("Notice", "Fired after button clicked","ok");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.