C#/WPF: Raccourci clavier pas de déclenchement de Commande
Je l'ai déclaré à <InputBindings>
<UserControl.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyImageCommand}" />
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteImageCommand}" />
</UserControl.InputBindings>
Des fins de test, j'ai ajouté des boutons liés à ces commandes trop
<Button Command="{Binding CopyImageCommand}" Content="Copy" />
<Button Command="{Binding PasteImageCommand}" Content="Paste" />
J'ai remarqué que quand la pâte bouton est activé, lorsque j'appuie sur Ctrl-V rien ne se passe. Ctrl-C semble fonctionner. Pour cela, un élément de zone de liste est sélectionné, je ne suis pas sûr si cela fait une différence. Quelqu'un sait pourquoi mon PasteImageCommand
pas de déclenchement?
Je suis à l'aide .NET 4 btw
Mise à JOUR
Une meilleure code snipplet
<UserControl x:Class="QuickImageUpload.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:vm="clr-namespace:QuickImageUpload.ViewModels"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.InputBindings>
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyImageCommand}" />
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteImageCommand}" />
</UserControl.InputBindings>
<UserControl.DataContext>
<vm:ShellViewModel />
</UserControl.DataContext>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
Mise à JOUR
J'ai trouvé j'ai besoin de mettre la KeyBindings
dans la MainWindow, mais les commandes sont dans le ViewModel
, comment puis-je définir des raccourcis clavier dans le ShellView
qui se lie alors aux commandes dans le ShellViewModel
?
J'ai mis mon InputBindings dans le contrôle UserControl ShellView. J'ai découvert il fonctionne quand je les ai mis dans la MainWindow, mais j'ai besoin de configurer le modèle de vue de ShellViewModel, pas vraiment correcte je pense, comment puis-je gérer cela?
Salut jiew! j'ai presque le même problème. avez-vous trouvé la solution?
Je n'ai pas fait de C# pour un certain temps, je crains que je ne peux pas me rappeler si j'ai résolu ce problème 🙁
OriginalL'auteur Jiew Meng | 2010-10-15
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que vous n'êtes pas avoir de liaison des erreurs. Vous définissez le DataContext de la de contrôle de l'utilisateur, mais assurez-vous que les commandes peuvent se lier à elle. Parfois, WPF utilise juste l'ordre d'apparition, et le DataContext est défini plus tard, puis les commandes.
Probablement, la fenêtre de sortie VS déjà montre la liaison des erreurs pour les commandes. Essayez de mettre le DataContext de définition sur le dessus (et vous apprendre à le faire pour tous les points de vue).
J'ai eu plusieurs liaisons passe et ce post m'a aidé à réaliser il suffit d'aller dans chaque balise et défini exactement datacontext pour chaque composant. Merci!
OriginalL'auteur Geert van Horrik
Pour éviter les Raccourcis clavier codé en dur, j'ai dérivé Josh Smiths RelayCommand-Classe et ajouté un Raccourci liées à des trucs:
puis créer la commande dans le ViewModel:
et à l'engager dans la Vue:
Avec cette approche, je peux permettre à l'utilisateur de régler les raccourcis lors de l'exécution (dans ma configuration-fenêtre)
OriginalL'auteur 0xDEADBEEF
Êtes-vous à l'aide de 3,5 ou 4?
En 3.5 sa "fonction". UserControl.InputBindings ne fait pas partie de dataContext de l'arbre, de sorte que vous ne peut pas se lier à des éléments de classe, qui est lié à la mère. par exemple. La liaison de données ne fonctionnent pas et que vous avez besoin pour définir la liaison de données ou de tout Raccourci clavier à code à la main.
Fixe à 4.
J'ai mis à jour mon post avec une plus code snipplet montrant où l'entrée liaisons sont déclarées
OriginalL'auteur Euphoric
J'ai eu une situation similaire, où dans les Principaux évènements ont été l'obtention écouté que la Coquille Vue et n'était pas tunneling de l'opinion où la touche a été pressée.
Pour surmonter ce problème, j'ai écrit un petit comportement attaché à définir le focus sur le contrôle de l'utilisateur ou de l'élément du cadre, pour recevoir le focus sur le chargement initial et de cette façon, les frappes de touche sont écoutés par l'élément de l'INTERFACE utilisateur, je veux écouter.
Et l'a utilisé comme cela dans un de mes vues de liste comme ci-dessous -
Espère que cette aide.
-VJ
OriginalL'auteur VBK
Dans ce cas, vous pouvez fournir des raccourcis clavier dans votre RoutedCommand déclaration:
Cela devrait fonctionner.
OriginalL'auteur Alexzander
Essayez ceci:
OriginalL'auteur user2728832