【问题标题】:How to make a default button in UWP app using XAML?如何使用 XAML 在 UWP 应用中创建默认按钮?
【发布时间】:2016-03-02 11:01:20
【问题描述】:

我正在尝试在 UWP 应用中将按钮声明为默认按钮,但收到错误:

在类型“按钮”中找不到属性“IsDefault”

如何在 UWP 应用中设置默认按钮?

【问题讨论】:

  • 你的意思是设置焦点吗?
  • 页面上有按钮、文本框和滑块。我需要一个按钮,用户可以通过按 ENTER 键来调用它。在 WPF 中,我通过设置“IsDefault”属性来做到这一点。

标签: xaml win-universal-app


【解决方案1】:

您可以使用可以放置在任何文本框中的按键事件,例如,如果您正在创建一个登录页面,那么可能会有 2 个用于用户名和密码的文本框,然后只需将按键事件处理程序添加到文本框,因为它将是像这样的最后一个必填字段:

<PasswordBox KeyDown="PasswordKeyDown"/>

那么你可以这样处理这个事件:

 using System.Windows.Input;

private void PasswordKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
        Login();
}

希望对你有帮助:)

【讨论】:

  • 谢谢,但我想只使用 XAML 并且不使用代码
【解决方案2】:

我知道 WPF 中的 IsDefault 是什么,但如果要在 UWP 中按下按钮,您可以使用 CoreWindow.GetForCurrentThread().KeyDown。创建一个在按下按钮或单击VirtualKey.Enter 时将调用的方法。

public MainPage()
{
    this.InitializeComponent();
    CoreWindow.GetForCurrentThread().KeyDown += MainPage_KeyDown; ;
}

private void MainPage_KeyDown(CoreWindow sender, KeyEventArgs args)
{
    switch (args.VirtualKey)
    {
        case Windows.System.VirtualKey.Enter:
            // handler for enter key
            break;
        default:
            break;
    }
}

【讨论】:

  • 一个简单的if (args.VirtualKey == VirtualKey.Enter) { /* handler for enter key */ } 就足够了。
【解决方案3】:

没有简单或干净的方法来解决您的问题,因为 IsDefault 不适用于 uwp 应用程序。 如果您正在使用 MVVM 或者您想重用您的代码,我建议您使用 Behaviors 并按照其他人发布的示例进行操作。

【讨论】:

    【解决方案4】:

    我需要一个按钮,用户可以通过按 ENTER 键来调用它。

    在 UWP 应用中,默认情况下,可以通过按 Enter 键调用 Button。所以我猜你想要的是将焦点设置在这个 Button 上,而你的页面中还有其他一些 UIElements。

    可以参考Keyboard navigation among UI elements

    默认情况下,控件的 Tab 键顺序与它们添加到设计图面、在 XAML 中列出或以编程方式添加到容器的顺序相同。

    要关注不是第一个元素的Button,您只需将TabIndex="1" 属性赋予您的Button,此属性可以使您的Button 在页面加载时获得焦点,但如果如果您更改了此页面中其他控件的焦点,则需要通过鼠标单击、触摸或 TAB 键重新选择此按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 2019-02-09
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多