在 Xamarin.Forms 中指定默认按钮

Edw*_*rey 5 .net defaultbutton xamarin.forms

在 Xamarin.Forms 中,如何将按钮指定为页面的默认按钮?

例如,在 UWP 上,当用户在页面具有焦点时按下 Enter 键时,应触发DefaultButton的单击处理程序。

Tim*_*mes 5

假设您正在尝试复制给 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)

但我对此并不确定。

在 Xamarin 论坛中查看