繁体   English   中英

如何检查条目的 Unfocus 事件是否由单击 Xamarin.Forms 中的按钮触发?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM