簡體   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