我有一个WPF窗口(.NET 4.0),它使用ShowDialog()
打开另一个WPF窗口作为对话框。在该对话框窗口中,我有一个保存和取消按钮,我想分别连接alt + S和alt + C来保存和取消快捷方式。
按钮中有一个AccessText
元素,在设计器中下划线后面的字母按钮上显示下划线。这在用户按下alt键时有效。当用户按下访问键时,快捷方式也会起作用。
但是,问题出在这里:
访问密钥无需alt。一旦对话框打开,我可以只按 S 或 C 而不用 alt 并按下按钮点击事件。如果焦点在输入控件(即文本框)上,那么它只适用于alt,这就是我想要的。但是,当表单具有焦点时,我只希望访问键与alt一起使用。
第一次按alt后,除非您开始输入输入控件(即文本框),否则下划线将永远显示在按钮文本中。如果我再次按下alt,我会期望它们隐藏起来。这对WPF来说是正常的吗?
以下是从主窗口调用对话框的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
var w = new DialogWindow();
w.ShowDialog();
}
以下是对话框窗口中的XAML:
<Window x:Class="WpfApplication2.DialogWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="122" Width="330" Topmost="True">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Some Setting:" Margin="10"/>
<TextBox Width="200" Margin="2" />
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right">
<Button Name="btnSave" Margin="10,10,5,10" Width="100" Height="25" Click="btnSave_Click" >
<StackPanel Orientation="Horizontal">
<Image Source="pack://siteoforigin:,,,/save_16xLG.png" />
<AccessText Text="_Save" />
</StackPanel>
</Button>
<Button Name="btnCancel" Margin="5,10,10,10" Width="100" Height="25" Click="btnCancel_Click">
<StackPanel Orientation="Horizontal">
<Image Source="pack://siteoforigin:,,,/action_Cancel_16xLG.png" />
<AccessText Text="_Cancel" />
</StackPanel>
</Button>
</StackPanel>
</Grid>
</Window>
以下是对话框窗口的代码:
public partial class DialogWindow : Window
{
public DialogWindow()
{
InitializeComponent();
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = false;
this.Close();
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
答案 0 :(得分:0)
按 ALT 时无法隐藏。当焦点更改为另一个控件时,它会隐藏。
如果您没有关注任何一个TextBox,那么您可以专注于Button。按照设计,当焦点在按钮上时,WPF会响应热键,即使您没有按 Alt 。
请参阅此答案以获取解决方法:
Access key getting selected even we did not press 'Alt' key in WPF