Edw*_*rey 5 .net defaultbutton xamarin.forms
在 Xamarin.Forms 中,如何将按钮指定为页面的默认按钮?
例如,在 UWP 上,当用户在页面具有焦点时按下 Enter 键时,应触发DefaultButton的单击处理程序。
假设您正在尝试复制给 Alessandro 的第一条评论中提到的行为,您希望声明控件Completed的字段Entry以使用与按钮相同的事件处理程序。
例如,在 XAML 中:
<Entry Placeholder="Enter PIN Here"
Completed="DefaultButton_Clicked"/>
<Button Text="OK"
Clicked="DefaultButton_Clicked"/>
Run Code Online (Sandbox Code Playgroud)
然后在你的代码后面:
void DefaultButton_Clicked(object sender, EventArgs e)
{
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
如果您希望像您回答的那样在代码后面完成这一切,我建议您这样做,以便您能够取消订阅您的事件。您会发现使用匿名函数更加痛苦。您应该在 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;
}
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*aro -1
您不必说“在 Xamarin.Forms 中,如何将按钮指定为页面的默认按钮?” 因为 Xamarin.Forms 仅可视化特定于平台的控件。
您应该问“在 Android(或 iOS)中,如何将按钮指定为页面的默认按钮?”。
我认为这是聚焦按钮,所以你可以尝试类似的东西
Button b = new Button {Text = "This is the focused button"};
b.Focus();
Run Code Online (Sandbox Code Playgroud)
但我对此并不确定。