Menu

octobre 2010 Posts

Dependency Property : Trucs et astuces

Lors des développements en WPF on a souvent besoin d’écrire des propriétés de dépendances pour nos objets. En dehors de la déclaration simple de notre propriété, il y a quelques éléments qui méritent d’être connue. Dans l’exemple qui va suivre, je vais écrire une propriété de dépendance appelée « MaProp », qui sera un Int32 et qui ne peut prendre des valeurs que de 1 à 100.

1 – Déclaration de la propriété

Il faut bien évidement déclarer sa propriété, dans Visual Studio il y un a snipet pour ça : propdp.

public static readonly DependencyProperty MaPropProperty = DependencyProperty.Register("MaProp", typeof(int), typeof(MaClasse), new UIPropertyMetadata(1));

Dans les conventions de nommage, on ajoute toujours « Property » sur l’a déclaration statique, ensuite pour initialiser celle-ci, on peut donner une valeur par défaut dans le dernier paramètre, ici 1.

Read More

Projet CodePlex : Surface 2D Engine

Je vous présente mon deuxième projet CodePlex, un moteur 2D pour XNA 3.1 et Microsoft Surface. Il contient un moteur pour facilement faire des projets XNA sous Microsoft Surface, beaucoup de choses ont été abstraite pour vous simplifier la tâche. Vous avez les sources, c’est libre de droit, j’attend vos retours avec impatience, enjoy 🙂

Ca se télécharge ici : http://blacksurface2dengine.codeplex.com/

Read More

Surface : Contrôle Stick Analogique

Je vous propose aujourd’hui un petit contrôle Microsoft Surface (WPF) pour vos projets. C’est un stick analogique tactile, vous pouvez télécharger les sources ci-dessous :

Black.StickAnalogique (9,24 kb)

Le contrôle est très simple à utiliser, il possède deux propriétés de dépendances : ValueX et ValueY qui représentent une valeur entre -1 et 1. Ces valeurs correspondent à la distance parcouru par le stick analogique, respectivement sur l’axe X et sur l’axe Y par rapport au centre. Il faut noter par contre que les axes sont inversés, à savoir :

– Sur l’axe X, -1 correspond à la position gauche et 1 à la position droite.

– Sur l’axe Y, -1 correspond à la position haute et 1 a la position basse.

Il y a aussi deux événements, ValueXChange et ValueYChange qui se déclenchent à chaque modification de ValueX pour le premier et ValueY pour le second.

J’espère que ce composant vous sera utile, je le rajouterais dans le toolkit bientôt.

Read More

SurfaceItemsControl comment ça marche ?

Il arrive souvent lors d’un développement Microsoft Surface, de devoir créer des contrôles personnalisés pour affiner l’expérience NUI (Natural User Interface) de notre application. La plupart du temps on va créer un SurfaceUserControl ou un CustomControl, mais d’expérience il arrive souvent de devoir créer un contrôle de contenu qui fonctionne à la manière d’une ListBox, ComboBoxou ScatterView. Je vais donc expliquer comment créer ce genre de contrôle en héritant d’un SurfaceItemsControl (ItemsControl en WPF, la démarche est identique).

Concept de base :

Un SurfaceItemsControl n’est qu’un container qui permet d’afficher et de gérer des éléments de diverses nature et de les afficher et les traiter d’une façon particulière. Comme pour tout container Surface (ou WPF), la propriété ItemsSource permet, par Binding notamment, de lui adresser la liste des éléments à traiter. Au moment de traiter la liste de ses éléments, l’ItemsControl va encapsuler chaque élément de la liste (chaque élément de l’arbre logique) dans un container de type ContentControl afin de les traiter de façon unifiée dans son arbre visuel, cependant il restera accessible en l’état dans l’arbre logique. Là ou ça deviens intéréssant, c’est que l’on peut redéfinir ce container et lui donner des comportements que nous jugeons utiles.

Voici les différentes étapes pour implémenter correctement ce type de contrôle.

Read More