Menu

C# Posts

Astuce : Géolocalisation (Windows 8.1)

Voici comment initialiser et gérer la géolocalisation sous Windows 8.1, c’est assez simple et vous verrez que ça va assez vite à mettre en place.

La géolocalisation sous Windows 8.1 commence par la déclaration dans le manifeste de l’application de la capacité « Location » en cochant la case adéquat :

Localisation

Une fois cette modification faite, tout va se passer avec la classe « Geolocator », cette classe magique regroupe toutes les actions pour faire de la géolocalisation.

Read More

Astuce : Tuile a 5 faces (Windows 8.1)

Voici une petite astuce qui peut être intéressante pour les développeurs Windows 8.1 (et par extension sur Windows 8 ça marche aussi). Comment faire pour créer une tuile ayant 5 Templates différents qui défilent et ce dans les trois tailles (carré, rectangle et large).

En fait ce n’est pas si sorcier que ça. Tout d’abord il déterminer les Templates que vous voulez afficher, pour cela vous pouvez les consulter tous les Templates sur MSDN, ce qui vous donnera une bonne vision de ce qu’il est possible de faire avec les tuiles sous Windows 8.1.

Vous avez trouvé de quoi vos tuiles vont être constituées ? Il n’y à plus qu’a la mettre en place.

Pour définir votre tuile dynamique, il faut générer un XML qui décrit ce que vous voulez afficher et les données qui les constituent. Pour cela deux moyen de créer ce XML. La première façon est de récupérer le template d’une tuile avec la fonction statique :

XmlDocument template = Windows.UI.NotificationsTileUpdateManager.GetTemplateContent(TileTemplateType type)

Read More

ItemTemplate Windows 8

Un petit post pour vous partager un petit soucis que j’ai rencontrer. Je me suis créer des « ProjectTemplates » et « ItemTemplates » pour mes projets MVVM sous Windows 8. Là où la création du « ProjectTemplate » se passe sans soucis, je me suis aperçu que mes « ItemTemplates » ne s’affichais pas quand je faisais « Nouvel élément ».

En fait, Visual Studio 2012 exporte ceci dans son fichier « MyTemplate.vstemplate » :

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
    <TemplateData>
        <DefaultName>ItemView.xaml</DefaultName>
        <Name>Black Windows 8 Empty View</Name>
        <Description>Vue pour être utilisée dans une pattern MVVM Black Blog</Description>
        <ProjectType>CSharp</ProjectType>
        <SortOrder>10</SortOrder>
        <Icon>__TemplateIcon.jpg</Icon>
        <PreviewImage>__PreviewImage.jpg</PreviewImage>
    </TemplateData>
    <TemplateContent>
        <References />
        <ProjectItem SubType="Designer" TargetFileName="$fileinputname$.xaml" ReplaceParameters="true">HomeView.xaml</ProjectItem>
        <ProjectItem SubType="Code" TargetFileName="$fileinputname$.xaml.cs" ReplaceParameters="true">HomeView.xaml.cs</ProjectItem>
    </TemplateContent>
</VSTemplate>

Or avec cette définition, l’ItemTemplate ne s’affiche pas dans ma liste. En cherchant un peu je me suis rendy compte qu’il manquait en fait un élément de définition dans le fichier. Si j’ajoute cette ligne dans le fichier de définition :

<TemplateGroupID>WinRT-Managed</TemplateGroupID>

Mon « ItemTemplate » s’affiche bien, il faut juste le savoir.

Read More

Localisation Dynamique

Une de mes problématiques en ce moment est liée à la localisation de mes applications. En effet, sous Windows Store App, si l’on veut switcher d’une langue à l’autre, il faut soit changer la langue de son OS et relancer l’application (si celle-ci utilise la localisation à partir des ressources) ou alors créer son système custom et tout ça doit être bien intégré dans votre pattern MVVM, or moi je voudrais faire ça à la volé. Bref un vrai casse-tête.

Personnellement j’ai planché un peu sur le problème et j’ai donc trouvé une première solution, certes ce n’est pas spécialement la meilleur ou la plus performante, mais elle offre je pense un bon compromis entre Resources / Binding / MVVM.

Read More

SqlDependency, vue rapide

Il m’a été amené récemment à utiliser les SqlDependency dans le cadre d’un de mes projets. Je vous fais donc partager aujourd’hui mon retour sur cette fonctionnalité SQL Server / .Net et en bonus je vous donne un code pour les gérer plus facilement.

Qu’est que SqlDependecy

Avant toute chose, revenons sur cette fonctionnalité. Depuis SQL Server 2005, il est possible de créer une dépendance entre du code .Net (via les APIs ADO.Net) et un jeu de résultat SQL. Pour faire simple, SQL Server va pourvoir nous notifier quand le résultat d’une requête change. Pour cela on lui fournit une requête SELECT simple qu’il va exécuter, le résultat de cette requête servira de référence pour la notification. Ensuite, si ce même SELECT donne un résultat différent plus tard, SQL Server nous rappelle pour nous notifier que le premier résultat obtenu est différent du dernier résultat qu’il a évalué. Très pratique en web pour faire de l’invalidation de cache.

Read More
SDK Surface 2 : Notions élémentaires

SDK Surface 2 : Notions élémentaires

Quand on développe avec le SDK Microsoft® Surface® 2.0, il est important de bien connaître les concepts de base de ce type de programmation. Je vais donc vous exposer ces concepts qu’il faut connaître pour bien appréhender ce genre de développement.

Qu’est-ce que le tactile ?

On parle de tactile pour « tout objet ou interface qui possède une interaction avec un ou plusieurs doigts ». Ce qui est intéressant avec cette définition c’est qu’on parle de doigt, or la plupart des périphériques tactiles ne font pas la différence entre un doigt et, par exemple, la paume de notre main. Pour ce type de périphérique un contact est un contact, peu importe sa forme et son volume.

Si je fais cette distinction c’est que le SDK Microsoft Surface 2.0 va nous permettre de faire cette différence, c’est-à-dire de nous donner les capacités de reconnaissance tactile du périphérique sur lequel on lance notre application. Il va nous permettre des interactions « tactiles » avec autre chose qu’un doigt ou une main, par exemple des objets et plus particulièrement des « Tags » si le périphérique le permet.

Read More