Question

Je suis en train de tirer des commandes basées sur les frappes en Silverlight. Si je comprends bien, vous ne pouvez pas utiliser AccessKey ou AcceleratorKey dans Silverlight. il semble aussi que les pourraient être utiles InputBindings propriété attachés ne fonctionne pas non plus.

Je commencé à chercher dans d'autres endroits. Il ressemblait à prisme était la façon d'obtenir des commandes de travail dans Silverlight, je vérifie cela. Cependant, ils ont seulement un gestionnaire de clic, ce qui est même pas un point de départ utile pour obtenir des commandes clés mises en place.

Suis-je manque juste une partie de prisme? Ou est-il un bon moyen standard de manipulation avec les raccourcis clavier MVVM Silverlight?

Était-ce utile?

La solution

On dirait que vous êtes à la recherche d'un moyen de MVVMish « sans code » de la manipulation du KeyUp / KeyPress / événement KeyDown.

Option n ° 1:. Prism Vous l'avez mentionné seulement navires avec la commande Click. Cependant, vous pouvez ajouter vos propres DPs attachées à activer les commandes pour tout événement que vous souhaitez (comme KeyUp / KeyDown / KeyPress).

Si vous êtes à la recherche d'un échantillon sur ce Corey a un bon pour ToggleButton.Checked / événements décochée.
http://www.85turns.com/2009/06/ 24 / togglebutton-commande de prisme /

<ToggleButton x:Name="ToggleButton1" 
            customCommands:Checked.Command="{Binding CheckedCommand}"
            customCommands:UnChecked.Command="{Binding UnCheckedCommand}"
        Margin="8,8,0,8" Content="Check me"
        />

En outre, Erik Mork a une excellente vidéo qui vous donne une bonne vue d'ensemble sur les commandes et la façon de créer une commande personnalisée Attached DP. http://development-guides.silverbaylabs.org/Video/Prism-Commands

Option n ° 2: Triggers Blend Expression Blend Les navires SDK avec Triggers et des comportements sur place à ce que vous essayez de faire.
Blend Exemples navires de projet CodePlex avec un EventTrigger vous pouvez utiliser:

<i:EventTrigger EventName="Click">
      <si:InvokeDataCommand Command="{Binding ShoppingCart.CheckOutCommand}"/>
</i:EventTrigger>

Ou, vous pouvez créer votre propre déclencheur personnalisé pour les événements clés et faire un AVC il y a tout ce que vous voudriez. Voici un exemple:
http://azurecoding.net/blogs/brownie /archive/2009/04/06/blend-behaviors-ftw.aspx

Autres conseils

Voulez-vous dire comme Ctrl + v ou tel Je l'ai vu l'exemple suivant au le site MSDN .

void Canvas_KeyUp(object sender, KeyEventArgs e)
{
    //check for the specific 'v' key, then check modifiers
    if (e.Key==Key.V) { 
        if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) {
        //specific Ctrl+V action here
        }
    } // else ignore the keystroke
}

Le boîte à outils MVVM contient une classe CommandReference intéressante qui vous permet de lier InputBindings aux commandes ViewModel. Je ne suis pas sûr que cela fonctionne pour Silverlight, mais vous pouvez essayer ...

OK, comme RandomEngy a souligné, il n'y a pas InputBindings dans Silverlight ...

Cependant, je pense que vous pouvez utiliser des comportements attachés. Il est un moyen de « lier » un événement à une commande du ViewModel. Marlon Grech a une bonne mise en œuvre ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top