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
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Le Zero Trust : pourquoi votre entreprise en a besoin
- Cloud souverain : répondre aux enjeux d’hybridation et de maîtrise des dépendances
- Cybermenaces 2026 : l’IA devient la nouvelle arme des attaquants
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Articles les + lus
Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
Adapter la sécurité OT aux réalités de l’industrie
Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
À la une de la chaîne Tech
- Communes, entreprises ? Non, face au RGAA 5, l’IA seule ne rendra pas vos sites accessibles
- DevX Summit EMEA : les développeurs au cœur de la révolution de l’IA
- Adapter la sécurité OT aux réalités de l’industrie
- Coder vite, mais coder juste : trouver l’équilibre à l’ère de l’IA
- Mixité dans la Tech : en 2026, un choix de souveraineté stratégique
