SlideView : a Facebook-like panel for Windows Phone

I am a great fan of the official Facebook app on Windows Phone. It introduced a new set of controls, halfway between Windows Phone design and what is seen on other platforms.

There are especially 2 behaviors – or controls – that I love :

  • The sliding panels, left to right, to access navigation or chat
  • The disappearing header, depending on your scroll (down or up), to send a message or photo

So I told myself, Cyril, you like to create new controls, you like the ones in the FB app, why not try and mimic them into a brand new lib to share with the world ?

slideview

 

Here comes the SlideView library, or the « Facebook app inspired library » :)

It contains several controls :

  • The SlideView, a control allowing to slide between panels (2 or many more)
  • The SlideApplicationFrame, a control to use at top app level and packaged to display 3 panels with navigation occuring in the middle panel
  • The AutoHideBar, a control which is displayed when scrolling up in a list, and hidden when scrolling down

How to get the bits ?

Simple ! Two ways :

How does it work ?

The source code on codeplex contains some samples to see how it works. The main page also describes how to integrate controls in XAML.

I hope you’ll enjoy, and if you have suggestions, do no hesitate to comment this post, or just tweet it !

0  

TechDays 2014 : Introduction au développement Windows Phone 8

Cette année encore, j’ai eu la chance de speaker durant les TechDays 2014, le plus gros évènement de Microsoft en France pour les développeurs.

J’ai eu le plaisir de présenter une session sur l’introduction au développement Windows Phone 8, avec mon cher collègue David Poulin.

Une introduction en 45mn, un beau challenge. On a quand même réussi à parler de beaucoup de choses : comment bien démarrer avec le Dev Center, design Microsoft, XAML et contrôles usuels, navigation, émulateur, vignettes, quelques spécificités Windows Phone, monétisation, trucs & astuces pour devenir riche, et modes de publication.

La session a été enregistrée et est disponible ici :

0  

Windows Phone : Crash au démarrage

Parfois, après un remplacement de texte hasardeux, ou après une copie de projet, il arrive que son application Windows Phone ne veuille tout simplement plus démarrer, c’est le crash fatal, inopiné et sans appel, le rideau s’abaisse après l’écran du splashscreen.

Go debug

Dans ces cas-là, le réflexe du bon vieux développeur est de placer un breakpoint dans le constructeur de l’Application et sur le UnhandledException n’est-ce pas ? Ok, allons-y, pressons F5 …

Breakpoint_01

Le suspens est à son comble, malheur ô désarroi, ce fichu mode debug ne veut pas s’arrêter sur mon breakpoint, et l’application crash toujours ! Alors que faire, si le dieu du debug n’est plus avec moi ? Voici une liste de pistes et causes possibles pour vous aider dans ce malheureux traquenard :

Build Action

Lorsqu’on copie ou ajoute comme lien l’App.xaml, le vilain a tendance à perdre son Build Action qui se réinitialise à sa valeur par défaut, à savoir Page.

Pour que l’application se lance correctement, le point d’entrée – par défaut l’App.xaml – doit absolument avoir un Build Action = ApplicationDefinition.

BuildAction

Startup object

Si le problème persiste, allons explorer les propriétés du projet…

Il se peut qu’après une manipulation (copié/collé, ajout en tant que lien…), la propriété Startup object saute et pointe dans le vide. Cette valeur est plutôt importante puisqu’il s’agit de la classe point d’entrée de l’application.

Pas de soucis, 2 clics suffisent à rétablir la situation ! Hop, on remet la valeur vers la classe Application, ici il s’agira de PhoneApp1.App :

StartupObject

AssemblyCulture

Toujours pas ?! Alors investiguons du côté de l’AssemblyInfo.cs.

Le fichier contient de nombreux attributs. Celui qui nous intéresse se nomme [AssemblyCulture].

En temps normal, vous n’avez jamais à toucher cette propriété, qui sert à spécifier une culture aux assemblies satellites. Comme notre projet est l’assembly principale, il ne faut surtout pas spécifier de valeur à l’attribut, sous peine de plantage.

AssemblyInfo

Propriétés statiques

Petit rappel sur une base du langage C# : les propriétés statiques d’une classe sont initialisées avant que la première instance soit créée, c’est-à-dire avant même de passer dans son constructeur.

Aussi, si l’App contient un champ statique qui fait planter l’application, le programme s’arrête avant même d’atteindre le constructeur App(). Du coup, le breakpoint n’est jamais atteint, et la migraine commence …

Donc pensez à vérifier les propriétés statiques de votre App !

Navigation Page

En plus du startup object qui donne le point d’entrée de l’application, vous devez également spécifier la page d’entrée de l’application. Par défaut, la valeur est MainPage.xaml. Si vous êtes un maniaque du rangement comme moi et que vous préférez stocker la page dans un sous-répertoire, il va falloir configurer cela.

Pour ce faire, il suffit de se rendre dans le manifeste (WMAppManifest.xml) et indiquer dans Navigation Page le chemin vers la page principale.

Manifest

N.B.: Si jamais vous mettez un breakpoint dans le App.UnhandledException, vous aurez un message d’erreur relativement explicite pointant vers un soucis de navigation. Ce cas se démêle donc plus facilement que les autres :)

Conclusion

En résumé et pour faire simple :

  • App.xaml : Build Action = ApplicationDefinition
  • Propriétés du projet : Startup object = MonProjet.App
  • Pas de [assembly: AssemblyCulture("XX-XX")]
  • Propriétés statiques de l’App.xaml.cs à vérifier
  • WMAppManifest.xml : Navigation Page à initialiser

Avec cette checklist, vous devriez être paré à tout et avoir une application qui se lance. C’est un bon démarrage non ? :)

0  

Microsoft MVP C#

C’est avec une immense joie et honneur que je rejoins le merveilleux monde des Microsoft MVP, dans la catégorie « Visual C# ».

Merci à Microsoft pour ce titre et la reconnaissance qui l’accompagne, et merci également à tous les copains qui m’ont soutenu ! :)

Cette année est riche en rebondissements et en sortie de produits dans l’univers Microsoft, de quoi assouvir encore plus notre passion pour le code. J’espère continuer à contribuer au sein de la communauté et suivre les nombreux virages technologiques qui s’annoncent.

A très bientôt pour de nouvelles aventures =)

0  

[WinRT] FlipView vertical

Vous connaissez tous le contrôle FlipView qui se branche sur une liste et affiche un élément à la fois, tout en permettant de naviguer de l’un à l’autre d’une pichenette du doigt.

Le comportement par défaut déroule les éléments horizontalement, sauf qu’on aimerait bien basculer en mode vertical ! (vu le titre de l’article, vous l’aviez déjà deviné non ? :-))

Premier réflexe : on cherche une propriété de type Orientation, comme sur notre bon vieux StackPanel. Grosse déception : il n’y en a pas !

On tripatouille sur internet via notre moteur de recherche préféré, peu de succès, moments de doute … jusqu’à ce que je me rende compte que Javascript a un léger avantage puisqu’il l’a, lui, son attribut Orientation.

Allez, on ne désespère pas ! Le template du contrôle contient les propriétés VerticalNextTemplate et VerticalPreviousTemplate, c’est bien que c’est prévu quelque part !

Après un long jeu de piste, je reviens sur mon bon vieil ami msdn, et là bingo ! La solution :

<FlipView ItemsSource="{Binding Images}">
    <FlipView.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel Orientation="Vertical" />
        </ItemsPanelTemplate>
    </FlipView.ItemsPanel>
    <FlipView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" />
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

Et voilà, il suffisait simplement de changer l’Orientation non pas de la FlipView, mais de l’ItemsPanel :-)

0  

Windows Phone : comment rediriger vers les paramètres du téléphone depuis votre app

La philosophie de Windows Phone permet d’interagir avec l’OS sous de nombreuses formes. Parmi celles-ci, le SDK nous donne la possibilité de renvoyer vers les pages des paramètres du téléphone via plusieurs moyens, que l’on développe sous Windows Phone 7 ou 8.

 

Windows Phone 7 et les Launchers

Sous Windows Phone 7, on nous met un Launcher à disposition : ConnectionSettingsTask.
Il s’agit du seul moyen pour rediriger vers les écrans de paramètre suivants : Wifi, Bluetooth, réseau cellulaire et mode avion.

L’utilisation est très simple :

ConnectionSettingsTask connectionSettingsTask = new ConnectionSettingsTask();
connectionSettingsTask.ConnectionSettingsType = ConnectionSettingsType.WiFi;
connectionSettingsTask.Show();

Vous l’aurez compris, il suffit de jouer sur le paramètre ConnectionSettingsType pour rediriger vers l’écran souhaité :

public enum ConnectionSettingsType
{
    WiFi = 0,
    Bluetooth = 1,
    Cellular = 2,
    AirplaneMode = 3,
}
Petite note à part : pour éviter la perpétuelle exception du « Navigation is not allowed when the task is not in the foreground » lorsqu’on lance plusieurs tâches d’affilé, n’oubliez pas d’encadrer d’un try … catch comme suit :
try
{
    connectionSettingsTask.Show();
}
catch { /* Je sais, c'est sale */ }
Plusieurs solutions existent pour pallier à ce soucis, comme par exemple empêcher de cliquer plusieurs fois d’affilé sur le bouton ou bloquer le launcher lorsque vous êtes en train de naviguer (via Page.NavigatingFrom).
Cette solution peut paraître sale, mais elle a le mérite d’être simple et efficace. Voilà qui vous évitera quelques surprises :)

 

Windows Phone 8 et les URI

Sous Windows Phone 8, on a plus de choix puisqu’on peut passer par le nouveau LaunchUriAsync:

Windows.System.Launcher.LaunchUriAsync(new Uri(URI_Scheme));

De nombreuses URI sont à votre disposition, la liste complète se trouvant sur msdn. Pour celles qui nous intéressent (i.e. en rapport avec les paramètres) :

URI Scheme Description
ms-settings-airplanemode: Lance les paramètres du mode Avion
ms-settings-bluetooth: Lance les paramètres Bluetooth
ms-settings-cellular: Lance les paramètres du réseau cellulaire
ms-settings-emailandaccounts: Lance les paramètres email & comptes
ms-settings-location: Lance les paramètres de localisation
ms-settings-lock: Lance les paramètres de l’écran de verrouillage
ms-settings-wifi: Lance les paramètres Wifi
Voici un exemple redirigeant vers les paramètres de l’écran de verrouillage :
Windows.System.Launcher.LaunchUriAsync(new Uri("ms-settings-lock:"));
Les autres URI disponibles sont pour la plupart disponibles sous formes de Launchers. Ceci dit, n’hésitez pas à y jeter un coup d’oeil.

Conclusion

Finalement, souvenez-vous que ces raccourcis existent, ils peuvent grandement améliorer l’expérience utilisateur. Cela leur permettra d’activer/désactiver des paramètres sur lesquels on n’a pas la main depuis l’application.

Par exemple, pensez à proposer un lien direct vers les paramètres Bluetooth si votre app en a besoin et que l’utilisateur ne l’a pas activé.

0  

Windows Phone 8 : nouveau SDK, nouveaux outils

Le tant attendu SDK pour Windows Phone 8 est enfin arrivé et apporte son lot de nouveautés, en apportant notamment son intégration à Visual Studio 2012. Faisons un tour d’horizon de tous ces nouveaux outils venant accélérer le développement d’applications Windows Phone !

Lire la suite sur le blog Soat

0  

Wallbase HD Wallpapers for Windows Phone


Here comes my new app for Windows Phone : Wallbase HD Wallpapers.

The application is based on the great website  Wallbase, which agregates HD wallpapers from all over the web : 4Chan, Deviant Art, etc.

Please don’t hesitate to share your feedbacks, bugs and stuff : http://wallbasewp.uservoice.com.

Description

Over a million HD Wallpapers !
This is an Windows Phone app for the amazing wallpaper website Wallbase.

Features included :
✓ Browse, set and save over 1 million HD wallpapers
✓ Browse popular wallpapers
✓ Browse random wallpapers
✓ Browse recent wallpapers
✓ Browse popular tags
✓ Search by keyword/tags/color
✓ Filter by resolution, rating and 4chan image board
✓ Save a wallpaper

ABOUT WALLBASE
Wallbase (http://wallbase.cc) is a website which scrapes wallpapers from 4chan (http://4chan.org) and then allows users to tag/moderate the wallpapers. If you find a wallpaper which is tagged/classified incorrectly then please visit the wallpaper on the Wallbase website directly to modify it. Please also visit the Wallbase website for handling copyright related issues.

Screenshots








Get it now !

0  

[WP] Informer vos utilisateurs via message serveur

En tant que développeur d’application Windows Phone, la communication avec vos utilisateurs est primordiale. On pense souvent à laisser son mail, pour être contacté en cas de problème ou suggestion, mais contacter dans l’autre sens peut également s’avérer utile !

Lire la suite sur le blog So@t

 

0  

[Meetup Windows Apps] Gérer les tuiles dans Windows 8

J’ai eu le plaisir d’animer une conférence lundi dernier avec mon cher collègue Nathanaël Marchand lors du premier Meetup Windows Apps dédié à Windows 8.

On a parlé tuiles sous Windows 8, avec un tour d’horizon des possibilités, et en insistant bien sur les pièges de la certification.

 

Slides :

[iframe src="http://www.slideshare.net/slideshow/embed_code/14190708" width="600" height="350"]

Webcast (vers 45″) :

[iframe src="http://cdn.livestream.com/embed/iesamultimedia?layout=4&clip=pla_d99f61fa-4c83-424e-950b-4d5741120f2e&color=0xe7e7e7&autoPlay=false&mute=false&iconColorOver=0x888888&iconColor=0x777777&allowchat=true&height=355&width=600" width="600" height="355"]

0