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