Я создаю UserControl через неизвестное количество кнопок. Это делается с помощью DataTemplate и работает нормально.
Теперь я хотел бы добавить горячие клавиши к кнопкам - например, Control
F1
до F12
.
Я не нашел способа создать динамическую привязку клавиш - как с помощью кнопок. Как я могу сделать это связывание ключей динамически во время выполнения. Я думаю, что через второй DataTemplate - но мне пока не удалось заставить его работать.
Текущий материал выглядит так:
<UserControl.InputBindings>
<KeyBinding Key="Binding CommandShortcutKey" Command="{Binding CommandEvent, Mode=OneTime}" CommandParameter="{Binding CommandString}" />
</UserControl.InputBindings>
<StackPanel Margin="10" Name="stackPanel" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ItemsControl ItemsSource="{Binding CommandButtonCollection}" VerticalAlignment="Stretch">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button
Content="{Binding Name}"
Command="{Binding CommandEvent}"
CommandParameter="{Binding CommandString}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
Кнопки обновляются через ObservableCollection
- в противном случае ViewModel не содержит ничего полезного, я полагаю.