Specify a default button in Xamarin.Forms
.net, defaultbutton, xamarin.forms
Solution
Assuming you are trying to replicate the behavior as noted in your first comment to Alessandro, you want to declare the `Completed` field of your `Entry` control to use the same event handler as your button.
For example, in XAML:
<Entry Placeholder="Enter PIN Here"
Completed="DefaultButton_Clicked"/>
<Button Text="OK"
Clicked="DefaultButton_Clicked"/>
Then in your code behind:
void DefaultButton_Clicked(object sender, EventArgs e)
{
//Do stuff
}
If you are looking to do this all in code behind like you have answered, I suggest doing it this way so you are able to unsubscribe your events. You'll find working with anonymous functions to be more of a pain. You should subscribe and unsubscribe your events in OnAppearing/OnDisappearing.
void DefaultButton_Clicked(object sender, EventArgs e)
{
if (model.MyCommand.CanExecute(null))
model.MyCommand.Execute(null);
}
protected override void OnAppearing()
{
base.OnAppearing();
foreach (var child in ((StackLayout)Content).Children)
{
if (child is Entry entry)
entry.Completed += DefaultButton_Clicked;
}
}
protected override void OnDisappearing()
{
base.OnDisappearing();
foreach (var child in ((StackLayout)Content).Children)
{
if (child is Entry entry)
entry.Completed -= DefaultButton_Clicked;
}
}
Problem
In Xamarin.Forms, how do you designate a button as the default button for a page? For example, on UWP the click handler for a DefaultButton should fire when the user presses the Enter key while the page has focus.