我有一个包含几个复选框的用户控件。每个 CheckBox 都有一个唯一的访问密钥。现在,如果我在对话框中使用超过 1 个此用户控件的实例,则访问键无法正常工作。按下访问键时焦点正确转到复选框,但未选中或取消选中复选框。
为了说明这一点,假设您有这个 XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Row="0" Content="_First" Margin="5"/>
<CheckBox Grid.Row="1" Content="F_urst" Margin="5"/>
</Grid>
</Window>
如果您运行上述代码,复选框将在 Alt+F 或 Alt+U 上被选中/取消选中。
现在让我们说你有这个 XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Row="0" Content="_First" Margin="5"/>
<CheckBox Grid.Row="1" Content="_Furst" Margin="5"/>
</Grid>
</Window>
这里两个复选框具有相同的访问密钥,即“F”。现在,如果我们执行 Alt+F,焦点将遍历复选框而不选择它们。我希望复选框像往常一样被选中或取消选中。
有谁知道如何解决这个问题?或者甚至是处理这种情况的更好主意?
PS:我知道在同一个对话框中有重复的访问键没有意义,但上面的代码仅用于说明目的。我的问题(正如我在顶部所解释的)是我在对话框中多次使用用户控件,因此控件中的访问键被重复。