いくつかのチェック ボックスを含むユーザー コントロールがあります。各 CheckBox には一意のアクセス キーがあります。ダイアログでこのユーザー コントロールの複数のインスタンスを使用すると、アクセス キーが正しく機能しません。アクセスキーが押されたときにフォーカスがチェックボックスに正しく移動しますが、チェックボックスがオンまたはオフになりません。
これを説明するために、次の 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: 同じダイアログで重複したアクセス キーを使用しても意味がないことはわかっていますが、上記のコードは説明のみを目的としています。私の問題 (冒頭で説明したように) は、ダイアログでユーザー コントロールを複数回使用しているため、コントロール内のアクセス キーが繰り返されることです。