Traditionnellement, les programmes s’ajustaient automatiquement à différentes plates-formes au moyen de directives de préprocesseur pour la compilation conditionnelle. Un programme Silverlight définit le symbole de compilation conditionnelle SILVERLIGHT et un programme Windows Phone 7 spécifie à la fois SILVERLIGHT et PHONE. (Vous pouvez les voir en sélectionnant
Le temps des ajustements de programmes
l’onglet Build dans la page des propriétés du projet.) En d’autres termes, vous pouvez avoir du code similaire à ce qui suit :
#if PHONE
// Code for Windows Phone 7
#else
// Code for regular Silverlight
#endif
Il est également possible de différencier au moment de l’exécution en accédant à l’objet Environment.OSVersion. Si la propriété Platform est PlatformID.WinCE et si la propriété Version.Major a la valeur 7 ou supérieure, votre code va s’exécuter sur un périphérique Windows Phone 7 (ou peut-être Windows Phone 8 ou 9).
En théorie, il est possible de définir des sections conditionnelles de fichiers XAML en utilisant les balises AlternateContent et Choice définies dans l’espace de nom markup-compatibility (mc), mais ces balises ne semblent pas être gérées dans Silverlight.
Néanmoins, XAML peut contenir des liaisons de données, lesquelles liaisons peuvent référencer différents objets selon la plate-forme. Il est aussi possible pour XAML d’avoir des références StaticResource qui récupèrent différents projets pour de multiples plates-formes. C’est l’approche que j’ai employée dans le programme TextTransform. J’ai créé la solution TextTransform de la même manière que pour la solution DragImage. Elle comporte trois projets : TextTransform (programme Silverlight), TextTransform.Web (projet Web d’hébergement du programme Silverlight) et TextTransform.Phone (pour Windows Phone 7).
Dans le projet Silverlight, j’ai ensuite créé un contrôle TextTransformer dérivé de UserControl. Ce contrôle est partagé entre le projet Silverlight et le projet Windows Phone 7. Le contrôle TextTransformer contient une chaîne de texte codée en dur (le terme « TEXT ») délimitée par une bordure (Border) avec un contrôle Thumb à chacun des quatre coins. Le déplacement d’un contrôle Thumb provoque l’application d’une transformée non affine à Border et TextBlock. (Cela fonctionne correctement uniquement si le quadrilatère formé par la bordure n’a pas de coins concaves.)
Le fichier TextTransformer.xaml ne crée pas de nouveau modèle pour le contrôle Thumb, mais il définit un style, comme illustré sur la figure 4.
Notez les références à ThumbSize et HalfThumbOffset. Bien que TextBlock, qui affiche le texte, obtienne la propriété Foreground appropriée via l’héritage de propriétés, Border doit être coloré explicitement avec la même couleur d’avant-plan :
< Border Name= »border »
BorderBrush= »{StaticResource ForegroundBrush} »
BorderThickness= »1″>
Où ces ressources sont-elles définies ? Elles le sont dans App.xaml. Le projet Silverlight classique inclut dans son fichier App.xaml file une collection Resources contenant ce qui suit :
< Application.Resources>
< SolidColorBrush x:Key= »BackgroundBrush » Color= »White » />
< SolidColorBrush x:Key= »ForegroundBrush » Color= »Black » />
< system:Double x:Key= »ThumbSize »>36
< system:Double x:Key= »HalfThumbOffset »>-18
< /Application.Resources>
Le fichier App.xaml pour le programme Windows Phone 7 référence les ressources prédéfinies pour les deux palettes et spécifie des valeurs plus larges pour ThumbSize et HalfThumbOffset :
< Application.Resources>
< SolidColorBrush x:Key= »BackgroundBrush »
Color= »{StaticResource PhoneBackgroundColor} » />
< SolidColorBrush x:Key= »ForegroundBrush »
Color= »{StaticResource PhoneForegroundColor} » />
< system:Double x:Key= »ThumbSize »>96
< system:Double x:Key= »HalfThumbOffset »>-48
< /system:Double>
< /Application.Resources>
La figure 5 affiche le programme s’exécutant dans le navigateur et la figure 6 présente le programme fonctionnant dans l’émulateur Windows Phone 7. Ce dernier est affiché à 50 pour cent de sa taille complète afin de compenser la plus forte densité de pixels sur le téléphone.
Ces techniques suggèrent que le partage de code entre le poste de travail et le téléphone est devenu une réalité.
Si vous souhaitez approfondir un peu plus le sujet, le Surface Toolkit for Windows Touch inclut un contrôle SurfaceThumb pour les développeurs WPF. Il est équivalent au contrôle Thumb normal, mais il ajoute la prise en charge de la véritable fonction multi-tactile et des événements pour le tapotement avec le pouce. Pour plus d’informations, consultez la page bêta Surface Toolkit for Windows Touch beta à l’adresse msdn.microsoft.com/library/ee957351.
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Analyse Patch Tuesday Juin 2026
- La bataille de la 6G se gagne dans la donnée en temps réel
- BlueSecure repense la sensibilisation à la cybersécurité avec des formats immersifs et engageants
- Les agents d’IA fragilisent la sécurité : pour les sécuriser, inutile de repartir de zéro
Articles les + lus
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
