【发布时间】:2016-03-02 11:01:20
【问题描述】:
我正在尝试在 UWP 应用中将按钮声明为默认按钮,但收到错误:
在类型“按钮”中找不到属性“IsDefault”
如何在 UWP 应用中设置默认按钮?
【问题讨论】:
-
你的意思是设置焦点吗?
-
页面上有按钮、文本框和滑块。我需要一个按钮,用户可以通过按 ENTER 键来调用它。在 WPF 中,我通过设置“IsDefault”属性来做到这一点。
我正在尝试在 UWP 应用中将按钮声明为默认按钮,但收到错误:
在类型“按钮”中找不到属性“IsDefault”
如何在 UWP 应用中设置默认按钮?
【问题讨论】:
您可以使用可以放置在任何文本框中的按键事件,例如,如果您正在创建一个登录页面,那么可能会有 2 个用于用户名和密码的文本框,然后只需将按键事件处理程序添加到文本框,因为它将是像这样的最后一个必填字段:
<PasswordBox KeyDown="PasswordKeyDown"/>
那么你可以这样处理这个事件:
using System.Windows.Input;
private void PasswordKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
Login();
}
希望对你有帮助:)
【讨论】:
我知道 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 */ } 就足够了。
没有简单或干净的方法来解决您的问题,因为 IsDefault 不适用于 uwp 应用程序。 如果您正在使用 MVVM 或者您想重用您的代码,我建议您使用 Behaviors 并按照其他人发布的示例进行操作。
【讨论】:
我需要一个按钮,用户可以通过按 ENTER 键来调用它。
在 UWP 应用中,默认情况下,可以通过按 Enter 键调用 Button。所以我猜你想要的是将焦点设置在这个 Button 上,而你的页面中还有其他一些 UIElements。
可以参考Keyboard navigation among UI elements,
默认情况下,控件的 Tab 键顺序与它们添加到设计图面、在 XAML 中列出或以编程方式添加到容器的顺序相同。
要关注不是第一个元素的Button,您只需将TabIndex="1" 属性赋予您的Button,此属性可以使您的Button 在页面加载时获得焦点,但如果如果您更改了此页面中其他控件的焦点,则需要通过鼠标单击、触摸或 TAB 键重新选择此按钮。
【讨论】: