Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Abonnements

WPF : Factoriser les KeyBindings

Je voulais utiliser les mêmes KeyBindings pour différents contrôles d’un même UserControl.

Mon premier réflexe a donc été de me créer une InputBindingCollection dans les resources de mon UserControl.

Ensuite, j’ai voulu affecter ma InputBindingCollection à la propriété InputBindings de mes différents contrôles. Facile sauf que… la propriété InputBindings est en Read Only ce qui fait que mon code ne marche pas.

D’où l’idée de Simon : passer par une Attached Property.

Je me suis créer un contrôle InputBindingsContener dédié à cela :

public class InputBindingsContener : ContentControl

{

    public static InputBindingCollection GetInputBindingsCollection(DependencyObject obj)

    {

        return (InputBindingCollection)obj.GetValue(InputBindingsProperty);

    }

    public static void SetInputBindingsCollection(DependencyObject obj, InputBindingCollection value)

    {

        obj.SetValue(InputBindingsProperty, value);

    }

    public static readonly DependencyProperty InputBindingsProperty =

        DependencyProperty.RegisterAttached("InputBindingsCollection", typeof(InputBindingCollection), typeof(UIElement), new UIPropertyMetadata(null, (sender, e) => ((UIElement)sender).InputBindings.AddRange((InputBindingCollection)e.NewValue)));

}

Ensuite, il me suffit de placer mes contrôles dans InputBindingsContener pour pouvoir écrire :

<ListView ns:InputBindingsContener.InputBindingsCollection="{StaticResource ContextMenuKeyBindings}" />

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Publié mercredi 15 avril 2009 02:57 par Matthieu MEZIL

Classé sous : , ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Intégration Yammer et SharePoint Online (Office 365), étape 1 … par Le blog de Patrick [MVP SharePoint] le 06-12-2013, 17:37

- [Dynamics CRM] Ajouter les dossiers de CRM au dossier Favoris d’Outlook par Christine Dubois le 06-10-2013, 15:50

- Visual Studio 2013 par Etienne Margraff le 06-04-2013, 10:26

- Configurer la collation SQL Server pour SharePoint par Blog de Jérémy Jeanson le 06-03-2013, 19:48

- Etendre le Team Web Access de TFS 2012 – Step 1: Création du plugin par Philippe Didiergeorges Aka Philess le 06-03-2013, 07:30

- Livre Blanc : Développer des applications NUI par Fathi Bellahcene le 06-01-2013, 11:35

- [Dynamics CRM 2011] Copier une vue d'entité par Christine Dubois le 05-29-2013, 13:20

- [Conf’SharePoint 2013] Mes présentations… par Le blog de Patrick [MVP SharePoint] le 05-28-2013, 09:04

- [wpdev] Storage bug in MediaLibrary.SavePicture par Kévin Gosse le 05-26-2013, 19:08

- VMMap en mode instrumentation sur système 64bit : attention à la plateforme cible du build .NET par CoqBlog le 05-25-2013, 22:25