> Tech > Le temps des ajustements de programmes

Le temps des ajustements de programmes

Tech - Par iTPro - Publié le 23 décembre 2011
email


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 gratuitement cette ressource

Guide de Services Cloud Managés

Guide de Services Cloud Managés

Accélérer votre transformation digitale, protéger et sécuriser vos environnements Cloud avec les offres de support, d'accompagnement et de services managés. Découvrez le TOP 3 des Services Managés pour accompagner la transformation de vos environnements Cloud, gagner en agilité et en sécurité dans un monde d'incertitudes.

Tech - Par iTPro - Publié le 23 décembre 2011