<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WP7Team</title>
	<atom:link href="http://www.wp7team.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wp7team.com</link>
	<description>Blog officiel de la team</description>
	<lastBuildDate>Sun, 29 Apr 2012 16:41:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Vos croquis Silverlight avec SketchFlow</title>
		<link>http://www.wp7team.com/vos-croquis-silverlight-avec-sletchflow/</link>
		<comments>http://www.wp7team.com/vos-croquis-silverlight-avec-sletchflow/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 09:26:22 +0000</pubDate>
		<dc:creator>Giu</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[croquis]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[sketflow]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=975</guid>
		<description><![CDATA[Il m&#8217;est déjà arrivé lors de l&#8217;analyse d&#8217;une l&#8217;application Windows Phone 7 d&#8217;être calé par les outils ne permettant pas de faire des croquis rapides et intuitifs, de là je revenais à la bonne vieille équipe feuille-crayon mais vous vous doutez bien, cette méthode a ses limites. Mais c&#8217;était avant que je découvre Sketchflow. Le<a href="http://www.wp7team.com/vos-croquis-silverlight-avec-sletchflow/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Il m&#8217;est déjà arrivé lors de l&#8217;analyse d&#8217;une l&#8217;application Windows Phone 7 d&#8217;être calé par les outils ne permettant pas de faire des croquis rapides et intuitifs, de là je revenais à la bonne vieille équipe feuille-crayon mais vous vous doutez bien, cette méthode a ses limites. Mais c&#8217;était avant que je découvre <strong>Sketchflow</strong>. <span id="more-975"></span></p>
<p style="text-align: justify;">Le bougre est un outil de prototypage super intuitif et exportable dans une multitude de formats comme des documents <strong>word</strong>, <strong>powerpoint</strong>, etc.</p>
<p style="text-align: justify;">Disponible depuis <strong>Expression Blend 3</strong> le soft permet actuellement de créer 3 types d&#8217;esquisses d&#8217;applications :</p>
<ul style="text-align: justify;">
<li>Silverlight</li>
<li>WPF</li>
<li>Windows Phone 7</li>
</ul>
<p style="text-align: justify;">Voici un aperçu du démarrage :</p>
<p style="text-align: justify;"><a href="http://labs.geekozaurus.com/wp-content/uploads/SKETCHFLOW_PROJECT.png" rel="lightbox[975]"><img class="aligncenter size-full wp-image-115" title="SKETCHFLOW_PROJECT" src="http://labs.geekozaurus.com/wp-content/uploads/SKETCHFLOW_PROJECT.png" alt="" width="550" height="465" /></a>On va principalement parler des croquis de type <strong>Windows Phone 7</strong> mais les exemples peuvent être utilisés dans les 3 versions citées. Sketchflow tire son originalité de son <del>manque de</del> design, celui-ci étant proche au possible du style &laquo;&nbsp;fait main&nbsp;&raquo; tellement apprécié des fans de <strong>Comic sans Ms</strong> :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/SKETCHFLOW.png" rel="lightbox[975]"><img class="aligncenter size-medium wp-image-117" title="SKETCHFLOW" src="http://labs.geekozaurus.com/wp-content/uploads/SKETCHFLOW-300x221.png" alt="" width="300" height="221" /></a><em>Cliquez sur l&#8217;image pour agrandir</em></p>
<p style="text-align: justify;">Les fins observateurs remarqueront que les rectangles eux aussi affichés dans le style fait main ainsi qu&#8217;un petit menu de navigation juste en dessous permettant de savoir les redirections entre chaque page.</p>
<p style="text-align: justify;">Sinon voici un aperçu de ce que ça vaut dans une vraie application :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/sketch3.jpg" rel="lightbox[975]"><img class="aligncenter size-medium wp-image-119" title="sketch3" src="http://labs.geekozaurus.com/wp-content/uploads/sketch3-300x220.jpg" alt="" width="300" height="220" /></a><em>Cliquez sur l&#8217;image pour agrandir</em></p>
<p style="text-align: justify;">Et finalement le résultat peut être exporté sous forme d&#8217;un site web avec asp.net et silverlight, plutôt cool en somme :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/sketch4.png" rel="lightbox[975]"><img class="aligncenter size-medium wp-image-121 alignnone" title="sketch4" src="http://labs.geekozaurus.com/wp-content/uploads/sketch4-300x160.png" alt="" width="300" height="160" /></a><em>La recette n&#8217;a pas changé : si tu cliques ça s&#8217;agrandit</em></p>
<p style="text-align: left;">Avec animations et interface style<strong> desktop</strong>, j&#8217;avoue ça claque. Si vous désirez utiliser le template pour Windows Phone, un seul lien : <a title="SketchFlow Template for Windows Phone" href="http://wp7sketchflow.codeplex.com/" target="_blank">SketchFlow Template for Windows Phone</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/vos-croquis-silverlight-avec-sletchflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir WordPress en application WP7</title>
		<link>http://www.wp7team.com/convertir-wordpress-en-application-wp7/</link>
		<comments>http://www.wp7team.com/convertir-wordpress-en-application-wp7/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 11:54:00 +0000</pubDate>
		<dc:creator>Giu</dc:creator>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=914</guid>
		<description><![CDATA[Aujourd&#8217;hui on va parler d&#8217;une application qui me tient à cœur puisque c&#8217;est l&#8217;application officielle de mon autre site à savoir www.geekozaurus.com. Pour info ce site est réalisé à l&#8217;aide de WordPress. Je voulais une petite application capable de me donner la description des articles ainsi qu&#8217;un lien pour rediriger l&#8217;utilisateur vers le site ou<a href="http://www.wp7team.com/convertir-wordpress-en-application-wp7/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Aujourd&#8217;hui on va parler d&#8217;une application qui me tient à cœur puisque c&#8217;est l&#8217;application officielle de mon autre site à savoir <a href="http://www.geekozaurus.com/" target="_blank">www.geekozaurus.com</a>. Pour info ce site est réalisé à l&#8217;aide de WordPress.<span id="more-914"></span></p>
<p style="text-align: justify;"><img title="Lire la suite…" src="http://labs.geekozaurus.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" alt="" /></p>
<p style="text-align: justify;">Je voulais une petite application capable de me donner la description des articles ainsi qu&#8217;un lien pour rediriger l&#8217;utilisateur vers le site ou il pourrait commenter etc. Pourquoi ne pas afficher le contenu directement dans l&#8217;application ? Parce que :</p>
<ol>
<li style="text-align: justify;">Il est impossible de récupérer le détail des visiteurs si ceux-ci passent par l&#8217;application et pas par la page web (celle-ci est optimisée pour mobiles à peu de choses prés).</li>
<li style="text-align: justify;">Les visiteurs n&#8217;auraient pas pu commenter, partager ou autre depuis l&#8217;application, ça faisait du travail inutile en plus.</li>
</ol>
<p style="text-align: justify;">Donc j&#8217;ai commencé mes recherches. Savez-vous que tous les sites en <strong>WordPress</strong> ont un flux rss ?</p>
<p><strong>RSS</strong> (sigle venant de l&#8217;anglais « <em>Rich Site Summary</em> ») désigne une famille de formats XML utilisés pour la syndication de contenu Web.</p>
<p>Flux qui peut être récupéré pour afficher la description, titre et lien ? \o/ Il suffit d&#8217;écrire l&#8217;adresse du blo wordpress suivi de /feed et c&#8217;est bon <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Ici le lien est : <a href="http://www.geekozaurus.com/feed" target="_blank">www.geekozaurus.com/feed</a></p>
<p>Donc il suffit simplement de récupérer le flux rss (qui est en fait un xml) et d&#8217;afficher le résultat. Pour cette petite opération rien de plus simple la fine équipe a déjà écrit un papier dessus :<a href="http://www.wp7team.com/wp7-lire-un-flux-rss/" target="_blank"> http://www.wp7team.com/wp7-lire-un-flux-rss/</a>.</p>
<p>Ici on récupérera le titre, le lien, la description et une image. Je me suis pas foulé l&#8217;image est dans le répertoire du projet et je la ré-affiche à chaque article, je trouve que ça fait plus présentable mais chacun ses goûts.</p>
<p>Voici donc ma requête Linq :</p>
<pre class="brush:csharp">            //On va remplir notre listbox avec les différents Items parcourus dans le XML
            lbContent.ItemsSource = from x in xmlItems.Descendants("item")
                                    select new RSSitem //On crée un nouvel élément RSSitem
                                    {
                                        // Pour chaque élément RSS on va extraire les informations suivante que l'on va placer
                                        // dans l'élément RSSitem que l'on vient de créer.
                                        Description = RSSitem.Convert(x.Element("description").Value), // valeur de l'élément &lt;description&gt;
                                        Title = RSSitem.Convert(x.Element("title").Value), //valeur de l'élément &lt;title&gt;
                                        Link = RSSitem.Convert(x.Element("link").Value),
                                        ImageSource = @"img/MarketplaceTile.png"
                                    };</pre>
<p style="text-align: justify;"><strong>lbContent</strong> représente ma <strong>listbox</strong> et <strong>xmlItems</strong> mon <strong>XElement</strong>. Je veux faire un lien comme en wordpress à savoir un petit bouton &#8216;lire plus&#8217; qui serait généré en fonction de chaque lien de chaque article, rien de plus simple :</p>
<pre class="brush:xml">&lt;HyperlinkButton Content="Lire plus"
NavigateUri="{Binding Link}"
Foreground="LightGray"
FontSize="20" TargetName="_blank"
Margin="-12,0,0,0"
HorizontalAlignment="Left"
HorizontalContentAlignment="Left" /&gt;</pre>
<p style="text-align: justify;">Vous constaterez que j&#8217;ai défini en dur la propriété <strong>Content</strong> et que j&#8217;ai mis le <strong>Binding</strong> sur <strong>NavigateUri</strong>. Les petits malins remarqueront que dans ma propriété <strong>Margin</strong> j&#8217;ai des négatifs. C&#8217;est tout à fait possible dans le cas ou je veux que mon lien soit aligné sur la même ligne que le reste du texte.<em> L&#8217;origine du décalage vient du fait que <strong>Microsoft</strong> a défini une bordure interne de 12 pixels au cas ou on cliquerait légèrement à coté du lien parce qu&#8217;on a tous des gros doigts.</em></p>
<p>Voici notre résultat final :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/GeekApp.png" rel="lightbox[914]"><img class="aligncenter" title="GeekApp" src="http://labs.geekozaurus.com/wp-content/uploads/GeekApp-180x300.png" alt="" width="180" height="300" /></a><em>Cliquez pour agrandir</em></p>
<p style="text-align: left;">Si vous désirez voir la dernière version une seule adresse : <a title="Geekozaurus" href="http://www.windowsphone.com/fr-BE/apps/4ddffc40-a082-4120-82d4-3db9c9086757" target="_blank">ici</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/convertir-wordpress-en-application-wp7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment faire vibrer le téléphone</title>
		<link>http://www.wp7team.com/comment-faire-vibrer-le-telephone/</link>
		<comments>http://www.wp7team.com/comment-faire-vibrer-le-telephone/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 08:59:51 +0000</pubDate>
		<dc:creator>Sogalas</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[delcencher]]></category>
		<category><![CDATA[VibrateControler]]></category>
		<category><![CDATA[vibration]]></category>
		<category><![CDATA[windows phone7]]></category>
		<category><![CDATA[wp7]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=895</guid>
		<description><![CDATA[Ce tutoriel sera assez court. Nous allons voir comment déclencher une vibration dans votre application Windows Phone 7. La vibration peut être utile pour par exemple faire comprendre à l'utilisateur qu'il est passé quelque chose.

Pour bien comprendre le fonctionnement, nous allons faire un exercice très simple. Pour se faire, on va créer un bouton dans notre application et lorsqu'on cliquera sur ce bouton, la vibration va se déclencher pendant 3 secondes.]]></description>
			<content:encoded><![CDATA[<p>Ce tutoriel sera assez court. Nous allons voir comment <strong>déclencher une vibration</strong> dans votre application Windows Phone 7. La vibration peut être utile pour par exemple faire comprendre à l&#8217;utilisateur qu&#8217;il s&#8217;est passé quelque chose.</p>
<p>Pour bien comprendre le fonctionnement, nous allons faire un exercice très simple. Pour se faire, on va créer un bouton dans notre application et lorsqu&#8217;on cliquera sur ce bouton, la <strong>vibration</strong> va se déclencher pendant 3 secondes.</p>
<p><span id="more-895"></span></p>
<p>Nous déclarons donc notre &laquo;&nbsp;vibrateur&nbsp;&raquo;</p>
<pre class="brush:csharp">VibrateController vibro = VibrateController.Default;</pre>
<p class="brush:csharp">Ensuite, sur notre bouton, nous allons faire débuter notre vibration :</p>
<pre class="brush:csharp">private void button1_Click(object sender, RoutedEventArgs e)
{
   vibro.Start(new TimeSpan(0, 0, 3));
}</pre>
<p class="brush:csharp">Et maintenant si on veut stopper la vibration avant les 3 secondes (pour une cause quelconque) il suffira de lui dire stop.</p>
<pre class="brush:csharp">vibro.Stop();</pre>
<h2 class="brush:csharp">Astuce</h2>
<p class="brush:csharp">Si l&#8217;on se réfère à la documentation du <strong>VibrateController</strong>, il n&#8217;est pas possible de faire une vibration de plus de 5 secondes (<a href="http://msdn.microsoft.com/en-us/library/microsoft.devices.vibratecontroller(v=vs.92).aspx">http://msdn.microsoft.com/en-us/library/microsoft.devices.vibratecontroller(v=vs.92).aspx</a>). Si vous désirez donc faire une vibration de 10 secondes par exemple, il faudra passer par un Timer qui fera un Tick toutes les 5 secondes et qui relancera votre Vibration.</p>
<p class="brush:csharp"><strong>Attention</strong> qu&#8217;il y&#8217;a un petit piège à faire ceci, quand vous recevrez un <strong>coup de téléphone</strong> et que vous n&#8217;avez pas coupé votre Timer et votre Vibration, elle <strong>continuera</strong> durant l&#8217;appel et ça ne passera pas la certification. Un article à venir parlera de la résolution de ce problème.</p>
<p class="brush:csharp">Voila, l&#8217;article est assez court, mais peut s&#8217;avérer utile. Vous retrouverez les sources de l&#8217;exemple en cliquant sur la trombone ci-dessous.</p>
<div id="attachment_708" class="wp-caption aligncenter" style="width: 100px"><a title="Code source de l'application" href="http://bit.ly/wEC97i"><img class="size-thumbnail wp-image-708 " title="Code source" src="http://www.wp7team.com/wp-content/uploads/2011/03/Attatchment-150x150.png" alt="Code source" width="90" height="90" /></a><p class="wp-caption-text">Code source de l&#39;application</p></div>
<p>&nbsp;</p>
<p>Source de l&#8217;article : Blog de Devillu  <a href="http://blog.devillu.com/tutoswp7/wp7-declencher-une-vibration/">http://blog.devillu.com/tutoswp7/wp7-declencher-une-vibration/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/comment-faire-vibrer-le-telephone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone 7 &amp; Facebook API #1</title>
		<link>http://www.wp7team.com/windows-phone-7-facebook-api-1/</link>
		<comments>http://www.wp7team.com/windows-phone-7-facebook-api-1/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 11:42:07 +0000</pubDate>
		<dc:creator>Giu</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[access]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Windows Phone 7]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=878</guid>
		<description><![CDATA[Dans cet article on va apprendre comment créer une application Windows Phone 7 en utilisant l&#8217;API Facebook ! On va commencer par des choses simples à savoir récupérer le contenu d&#8217;une page Facebook. Pourquoi une page ? Celles-ci sont définies par défaut au publique, donc toutes les informations (ça inclut vos posts, documents, etc.) sont<a href="http://www.wp7team.com/windows-phone-7-facebook-api-1/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em>Dans cet article on va apprendre comment créer une application Windows Phone 7 en utilisant l&#8217;API Facebook ! On va commencer par des choses simples à savoir récupérer le contenu d&#8217;une page Facebook. </em></p>
<p style="text-align: justify;"><em><span id="more-878"></span></em></p>
<blockquote><p><em>Pourquoi une page ?</em></p></blockquote>
<p style="text-align: justify;">Celles-ci sont définies par défaut au publique, donc toutes les informations (ça inclut vos posts, documents, etc.) sont accessibles par n&#8217;importe qui.<em></em></p>
<blockquote><p><em>Pourquoi ne pas récupérer simplement le flux rss de la page ?</em></p></blockquote>
<p style="text-align: justify;">Tout d&#8217;abord parce que c&#8217;est pas le but aujourd&#8217;hui, je vous rappelle qu&#8217;on est là pour <strong>apprendre comment fonctionne l&#8217;api de Facebook</strong>. Ensuite parce qu&#8217;ici nous allons découvrir une technologie qui sera approfondie par la suite par la récupération d&#8217;informations privées, opération qui est un poil plus complexe.</p>
<p style="text-align: justify;">Pour commencer il faut aller sur le site <a href="https://developers.facebook.com/" target="_blank">developers.facebook.com</a> et créer une application. Si l&#8217;opération se passe bien vous arrivez devant pareilles informations :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/2012/02/screen.png" rel="lightbox[878]"><img class="aligncenter size-medium wp-image-28" title="screen" src="http://labs.geekozaurus.com/wp-content/uploads/2012/02/screen1-300x86.png" alt="" width="300" height="86" /><span style="color: #888888;"><em>Cliquer</em></span></a><span style="color: #888888;"><em> sur l&#8217;image pour plus de détails</em></span></p>
<p style="text-align: justify;">Pour info l&#8217;API key contient 15 chiffres et donc ressemble à <strong>125478569852365</strong> tandis que l&#8217;App Secret contient une trentaine de caractères chiffres et lettres du style <strong>c16456d5646164fg649d46459g465</strong>. Quand on aura récupéré ces informations, il suffira d&#8217;utiliser un lien bien particulier avec nos 2 informations pour récuperer la 3eme nommée <strong>access token </strong>ou, pour les anglophobes un <strong>jeton d&#8217;accès</strong>. Ce qu&#8217;il est en fait, car avec cette suite de caractères on peut demander à Facebook certaines informations et le serveur regardera en fonction du jeton si on a le droit d&#8217;y accéder.</p>
<p style="text-align: justify;">Ok c&#8217;est clairement pas clair, je fais un dessin :</p>
<p style="text-align: center;"><a href="http://labs.geekozaurus.com/wp-content/uploads/2012/02/screen21.png" rel="lightbox[878]"><img class="aligncenter  wp-image-32" title="screen2" src="http://labs.geekozaurus.com/wp-content/uploads/2012/02/screen21-300x75.png" alt="" width="300" height="75" /></a><em>Pareil que le premier, si tu cliques sur l&#8217;image Magie ! Ça s&#8217;agrandit.</em></p>
<p style="text-align: left;">Voici le lien en question :</p>
<p style="text-align: center;"><span style="color: #808080;"><em>https://graph.facebook.com/oauth/access_token?client_id= + <strong>App_Id</strong> + &amp;client_secret= + <strong>App_Secret</strong> + &amp;grant_type=client_credentials</em></span></p>
<p style="text-align: left;">Voici le résultat qu&#8217;on est censé obtenir :</p>
<p style="text-align: center;"><span style="color: #808080;"><em>access_token=1564563123415645610563|f561564dfs46ezd</em></span></p>
<p style="text-align: left;">Comme vous êtes des génies, vous aurez compris qu&#8217;il faut remplacer les trucs en gras (App Id et App Secret) par les valeurs qu&#8217;on a récupéré plus tôt <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p style="text-align: left;">Ensuite on refait plus ou moins la même opération, à savoir<strong> un lien</strong> et <strong>une information</strong>, ici on parle de l&#8217;access token et du lien suivant :</p>
<p style="text-align: center;"><span style="color: #808080;"><em>https://graph.facebook.com/<strong>techdaysbe</strong>/<strong>feed</strong>? + _accessToken</em></span></p>
<p style="text-align: left;">De là 3 remarques :</p>
<ol>
<li style="text-align: justify;">Je suis un gros flemmard : la variable accessToken ici représente access_token=La valeur et pas seulement La valeur.</li>
<li style="text-align: justify;">Le premier mot en gras représente l&#8217;id de la page facebook, ici j&#8217;ai choisi la page des <strong>Techdays Be.</strong></li>
<li style="text-align: justify;">Le 2eme mot en gras c&#8217;est parce que je demande de récupérer toutes les infos relatives au mur, parce que en général pour une page Facebook c&#8217;est le contenu le plus intéressant.</li>
</ol>
<p>De là on récupère toutes les informations de la page sous forme d&#8217;un fichier <a href="http://fr.wikipedia.org/wiki/JavaScript_Object_Notation" target="_blank">json</a>. Je vous sert encore un ptit schéma :<img class="aligncenter size-full wp-image-39" title="schema2" src="http://labs.geekozaurus.com/wp-content/uploads/2012/02/schema2.png" alt="" width="400" height="200" /></p>
<p>Voilà un aperçu de ce à quoi le JSON ressemble (il n&#8217;est pas complet) :</p>
<pre class="brush:js">{
   "data": [
      {
         "id": "175942322416940_316583778389003",
         "from": {
            "name": "Microsoft TechDays Belgium",
            "category": "Local business",
            "id": "175942322416940"
         },
         "message": "Report of the Private Cloud Day (February 16) by Tijl Deneut [Dutch]: ",
         "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQDPArvxS8t5__m-&amp;w=90&amp;h=90&amp;url=http\u00253A\u00252F\u00252Fwww.itprofessional.be\u00252Fzd_images\u00252F2012\u00252F08\u00252Fdynamic-optimization_par.jpg",
         "link": "http://www.itprofessional.be/blogs/136565/techdays-be-2012-dag-3-private-cloud/",
         "name": "Techdays BE 2012 - dag 3: private cloud - blogs - ITProfessional - pagina: 1",
         "caption": "www.itprofessional.be",
         "description": "Op dag 3 van de Belgische Microsoft Techdays 2012 werd het private cloud thema van nabij gevolgd. Enkele interessante samenvattingen - blogs - ITProfessional - deel: 1",
         "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yD/r/aS8ecmYRys0.gif",
         "type": "link",
         "created_time": "2012-02-21T14:08:42+0000",
         "updated_time": "2012-02-21T14:08:42+0000",
         "likes": {
            "data": [
               {
                  "name": "Microsoft TechDays Belgium",
                  "category": "Local business",
                  "id": "175942322416940"
               },
               {
                  "name": "Willy Van den Houten",
                  "id": "1423670758"
               }</pre>
<p style="text-align: justify;"><code><br />
</code>De là on peut décemment commencer à parler code en Windows Phone 7. Donc on commence avec un projet tout propre dans lequel on lance un WebClient :</p>
<pre class="brush:csharp">WebClient getAccess = new WebClient();
                getAccess.DownloadStringAsync(new System.Uri(
				String.Format(
				"https://graph.facebook.com/oauth/access_token?client_id={0}&amp;client_secret={1}&amp;grant_type=client_credentials",
				App_Id,
				App_secret)));
                getAccess.DownloadStringCompleted += new DownloadStringCompletedEventHandler(GetAccessDownloadStringCompleted);</pre>
<p>Vous noterez que le lien contient l'App Id et l'App secret cité précédemment. Après il suffit de gérer le résultat obtenu :</p>
<pre class="brush:csharp">        public void GetAccessDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            _accessToken = e.Result;
            WebClient getWall = new WebClient();
            getWall.DownloadStringAsync(new System.Uri("https://graph.facebook.com/Ucrew.be/feed?" + _accessToken));
            getWall.DownloadStringCompleted += new DownloadStringCompletedEventHandler(GetWallDownloadStringCompleted);
        }</pre>
<p style="text-align: justify;">On récupère l'<strong>access token</strong> et on lance le second téléchargement avec un autre WebClient, il ne reste qu'à traiter le contenu en <strong>json</strong> :</p>
<pre style="text-align: justify;">        public void GetWallDownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            TreatJSon(JObject.Parse(e.Result));
        }</pre>
<p style="text-align: justify;"><em>On utilise ici le framework <strong>JSon.net</strong> pour créer un <strong>JObject</strong> et chipoter dessus. Un <strong>Jobject</strong> représente une page Facebook et si on veut récuperer chaque post, il suffit de diviser notre objet en <strong>JToken : </strong></em></p>
<pre class="brush:csharp">private void TreatJSon(JObject jobject)
{
    List&lt;JToken&gt;listData = jobject.SelectToken("data").Select(s=&gt;s).ToList();
    foreach(JToken tmp in ListData)
    {</pre>
<p style="text-align: justify;"><em></em>Pour récuperer chaque information de chaque post il suffit de lancer la recherche sur le JToken. Si on désire récuperer le nom du créateur du post, il suffit de faire : <strong>Username = MonJToken["from"]["name"]; </strong> récupérer le message ? <strong>Message = MonJToken.SelectToken("message")</strong>;</p>
<p style="text-align: justify;">Enfin il ne reste plus qu'à créer une listbox dynamique pour stocker tout ça :</p>
<pre class="brush:xml">&lt;ListBox Height="605" HorizontalAlignment="Left" Margin="0,0,0,6" Name="lbContent" VerticalAlignment="Bottom" Width="450"&gt;
                &lt;ListBox.ItemTemplate&gt;
                    &lt;DataTemplate&gt;
                        &lt;StackPanel Orientation="Vertical" Height="Auto"&gt;
                                &lt;TextBlock Text="{Binding UserName}"  Foreground="#FF2276BB" FontSize="28" /&gt;
                                &lt;TextBlock Text="{Binding Message}" TextWrapping="Wrap" FontSize="24"/&gt;
                        &lt;/StackPanel&gt;
                    &lt;/DataTemplate&gt;
                &lt;/ListBox.ItemTemplate&gt;
            &lt;/ListBox&gt;</pre>
<p style="text-align: left;"><em></em>Et c'est bon ! Vous avez toutes les clés en main pour créer votre application avec du contenu issu de Facebook <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/windows-phone-7-facebook-api-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Le b.a.-ba du debug avec Visual Studio.</title>
		<link>http://www.wp7team.com/le-b-a-ba-du-debug-avec-visual-studio/</link>
		<comments>http://www.wp7team.com/le-b-a-ba-du-debug-avec-visual-studio/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 08:31:23 +0000</pubDate>
		<dc:creator>Renaud</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=796</guid>
		<description><![CDATA[On a reçu pas mal de commentaires et de questions via le formulaire de contact sur le blog WP7Team, et en y répondant je me suis rendu compte que beaucoup de développeurs débutants se retrouvent coincés face à des problèmes simplement parce qu&#8217;ils ne savent pas débugger. Cet article est une adaptation d&#8217;un des mails que j&#8217;ai écrit pour<a href="http://www.wp7team.com/le-b-a-ba-du-debug-avec-visual-studio/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">On a reçu pas mal de commentaires et de questions via le formulaire de contact sur le blog <a title="WP7Team's blog" href="http://www.wp7team.com">WP7Team</a>, et en y répondant je me suis rendu compte que beaucoup de développeurs débutants se retrouvent coincés face à des problèmes simplement parce qu&#8217;ils ne savent pas débugger. Cet article est une adaptation d&#8217;un des mails que j&#8217;ai écrit pour répondre à l&#8217;une des questions reçues.</p>
<p style="text-align: justify;">Coder sans débugger, c&#8217;est un peu comme avancer dans un labyrinthe les yeux bandés! Dès que vous vous retrouvez face à un mur, vous êtes incapable de dire comment vous êtes arrivés là.</p>
<p style="text-align: justify;">Sans être un expert en la matière, je pense pouvoir vous donner <strong>quelques conseils très très basiques</strong> qui pourront peut-être vous éviter des crises de nerfs!</p>
<p style="text-align: justify;"><span id="more-796"></span></p>
<h3>1/ Lancer l&#8217;appli en Debug.</h3>
<p style="text-align: justify;">Premièrement, passez en mode Debug. Pour lancer l&#8217;exécution de votre application en Debug, cliquez sur la flèche verte ou appuyez sur F5 (<em>Start Debugging</em>).</p>
<div id="attachment_241" class="wp-caption aligncenter" style="width: 275px"><a href="http://www.renauddumont.be/wp-content/uploads/2011/06/debug2.jpg" rel="lightbox[796]"><img class="size-full wp-image-241" title="Debug2" src="http://www.renauddumont.be/wp-content/uploads/2011/06/debug2.jpg" alt="Debug" width="265" height="80" /></a><p class="wp-caption-text">Configuration: Debug</p></div>
<h3>2/ Placer des breakpoints.</h3>
<div id="attachment_243" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.renauddumont.be/wp-content/uploads/2011/06/debug1.jpg" rel="lightbox[796]"><img class="size-full wp-image-243 " title="breakpoint" src="http://www.renauddumont.be/wp-content/uploads/2011/06/debug1.jpg" alt="breakpoint" width="600" height="386" /></a><p class="wp-caption-text">Breakpoints: points d&#39;arrêt</p></div>
<p style="text-align: justify;">Dans la barre de gauche il y a des points rouges. Ce sont des points d’arrêts, et quand je lance mon appli en mode debug, comme c’est le cas ici, l’exécution s’arrêtera à chaque point d’arrêt !</p>
<p style="text-align: justify;">Donc, lancez l’application, et vous verrez le premier point d&#8217;arrêt rencontré se surligner en jaune :</p>
<div id="attachment_563" class="wp-caption aligncenter" style="width: 604px"><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-21.jpg" rel="lightbox[796]"><img class="size-full wp-image-563   " title="debug 2" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-21.jpg" alt="" width="594" height="205" /></a><p class="wp-caption-text">La ligne surlignée en jaune est celle sur le point d&#39;être exécutée!</p></div>
<p style="text-align: justify;">Notez bien que la <strong>ligne surlignée n&#8217;a pas encore été exécutée!</strong></p>
<p style="text-align: justify;">Si vous vous arrêtez sur la ligne suivante, myObject ne sera pas encore initialisé et aura null pour valeur.</p>
<pre class="brush:csharp">MyObject myObject = new MyObject();</pre>
<h3><span>3/ Naviguer en debug</span></h3>
<p style="text-align: justify;">Le bouton « play » <a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-31.jpg" rel="lightbox[796]"><img class="size-full wp-image-564" title="debug 3" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-31.jpg" alt="" width="23" height="19" /></a> (<strong>F5</strong>) permet de relancer l’exécution jusqu’à ce qu’on rencontre un nouveau point d’arrêt. Vous pouvez stopper ou redémarrer l&#8217;application: <a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-5.jpg" rel="lightbox[796]"><img class="size-full wp-image-565" title="debug 5" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-5.jpg" alt="" width="44" height="24" /></a></p>
<p style="text-align: justify;">Pas loin, vous trouverez des contrôles assez intéressants: <a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-4.jpg" rel="lightbox[796]"><img class="size-full wp-image-566" title="debug 4" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-4.jpg" alt="" width="75" height="27" /></a></p>
<p style="text-align: justify;">Le premier, <strong>StepInto (F11),</strong> va passer à la ligne suivante où rentrer à l’intérieur d’une méthode si la ligne sur laquelle on se trouve fait appel à une méthode !</p>
<p style="text-align: justify;">Celui du milieu, <strong>StepOver (F10),</strong> va passer à la ligne suivante, sans s&#8217;occuper des appels de méthodes.</p>
<p style="text-align: justify;">Et le dernier, <strong>StepOut (Maj + F11),</strong> va relancer l’exécution jusqu’à ce qu’on remonte d&#8217;un niveau, c&#8217;est à dire jusqu&#8217;à ce que l&#8217;on sortant de la méthode dans laquelle on se trouve pour arriver au code ayant fait appel à cette méthode.</p>
<h3 style="text-align: justify;">4/ Observer</h3>
<p style="text-align: justify;">Un des avantages des points d&#8217;arrêts est qu&#8217;ils vous permettent à un moment donné d&#8217;observer la valeur des variables que vous avez créées. Cela vous aidera peut-être à comprendre pourquoi votre programme ne se comporte pas comme vous l&#8217;espériez!</p>
<p style="text-align: justify;">Il existe plus moyens pour observer vos variables, comme cette vue, que vous devriez apercevoir lorsque vous lancez votre application en debug:</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-6.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-567" title="debug 6" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-6.jpg" alt="" width="534" height="188" /></a></p>
<p style="text-align: justify;">Si cette vue n’est pas affichée chez vous, allez dans le menu <strong>Debug</strong> &gt; <strong>Windows.</strong></p>
<p style="text-align: justify;">Affichez « Locals » et dans « Watch » affichez « Watch1 » (On parlera de celle-ci plus bas <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-7.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-568" title="debug 7" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-7.jpg" alt="" width="612" height="352" /></a></p>
<p style="text-align: justify;">Une autre possibilité pour espionner vos variables consiste simplement à placer le curseur de votre souris par dessus un nom de variable.</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-8.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-569" title="debug 8" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-8.jpg" alt="" width="449" height="68" /></a></p>
<p style="text-align: justify;">Sur l&#8217;image ci-dessus, en passant par-dessus le« e », vous pouvez voir grâce au menu contextuel que cette variable représente un <em>DownloadStringCompletedEventArgs</em>. Même pas besoin de connaître le début du code! Si l&#8217;on avait placé le curseur par dessus le &laquo;&nbsp;<em>Cancelled</em>&laquo;&nbsp;, vous pourriez voir apparaître <strong>[ e.Cancelled |false ]</strong> (ou true évidemment <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  c&#8217;est selon! )</p>
<p style="text-align: justify;">Regardons un exemple un peu plus complexe, tiré d&#8217;un code de MSDN:</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-91.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-575" title="debug 9" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-91.jpg" alt="" width="421" height="317" /></a></p>
<p style="text-align: justify;">Ici, l&#8217;objet <strong>this</strong> est un objet de type <strong>MainForm </strong>de l&#8217;espace de nom <strong>PluginRegistrationTool</strong>. Les valeurs affichées juste en dessous représentent les valeurs des propriétés <a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-11.jpg" rel="lightbox[796]"><img class="size-full wp-image-571" title="debug 11" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-11.jpg" alt="" width="21" height="16" /></a>, et les champs private <a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-12.jpg" rel="lightbox[796]"><img class="size-full wp-image-572" title="debug 12" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-12.jpg" alt="" width="18" height="18" /></a>de l&#8217;objet.</p>
<p style="text-align: justify;">La première ligne, &laquo;&nbsp;<strong>base</strong>&laquo;&nbsp;, permet d&#8217;accéder aux propriétés et champs hérités de la super-classe qui est ici <em>System.Windows.Forms.Form</em>.  On peut décider d&#8217;aller voir ce qu&#8217;il s&#8217;y cache:</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-10.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-576" title="debug 10" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-10.jpg" alt="" width="518" height="312" /></a></p>
<p style="text-align: justify;">On peut voir que cette classe hérite elle-même de System.Windows.Forms.ContainerControl, qui possède une quantité de propriétés. Vous pouvez bien évidemment décortiquer chacune de ces propriétés exactement de la même manière <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3 style="text-align: justify;">5/ Evaluer des expressions</h3>
<p style="text-align: justify;">Explorer à la souris, c&#8217;est pratique et rapide, mais parfois ce ne sera pas suffisant. C&#8217;est le cas dans l&#8217;exemple suivant:</p>
<p style="text-align: justify;"><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-13.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-577" title="debug 13" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-13.jpg" alt="" width="547" height="141" /></a>J&#8217;aimerais beaucoup savoir ce que vaut Math.Pow(z, y) à ce moment du programme, parce que ça m&#8217;aiderait à comprendre pourquoi je n&#8217;ai pas de chance et ne satisfait jamais la condition! Mais je suis nul en math :/ Et en fait, j&#8217;aimerais aussi savoir combien vaut mon opération si vraiment ce n&#8217;est pas égal à 100! <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: justify;">C&#8217;est là qu&#8217;intervient la vue <strong><span style="text-decoration: underline;">Watch</span></strong> que je vous ai fait ajouter tout à l&#8217;heure!</p>
<p style="text-align: justify;">Pour l&#8217;utiliser, rien de très compliqué, il suffit de sélectionner une expression, et de la glisser sur la vue <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  On sait maintenant que le résultat est&#8230;</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-14.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-578" title="debug 14" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-14.jpg" alt="" width="402" height="59" /></a></p>
<p style="text-align: justify;">Et puis rien ne nous empêche de mettre le premier membre de l&#8217;expression tout entier!</p>
<div id="attachment_579" class="wp-caption aligncenter" style="width: 482px"><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-15.jpg" rel="lightbox[796]"><img class="size-full wp-image-579" title="debug 15" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-15.jpg" alt="" width="472" height="20" /></a><p class="wp-caption-text">Effectivement, on est loin du compte...</p></div>
<p style="text-align: justify;">Et ce qui est tout aussi pratique, c&#8217;est que vous pouvez finalement taper n&#8217;importe quelle expression directement dans la colonne Name de la vue Watch:</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-16.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-580" title="debug 16" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-16.jpg" alt="" width="287" height="128" /></a></p>
<h3>5/ Les exceptions</h3>
<p style="text-align: justify;">Pour terminer, parlons d&#8217;un des points essentiels: les exceptions! Je vais reprendre le problème rencontré par le développeur qui nous avons contacté et qui a fait que j&#8217;écris ce post aujourd&#8217;hui.</p>
<p style="text-align: justify;">Cette personne développait une application pour Windows Phone et utilisait un HyperlinkButton, avec pour valeur de la proprité NavigateUri un lien vers une page web. Dans son dernier mail, cette personne me disait:</p>
<blockquote><p>[...] je suis incapable de comprendre pourquoi lorsque je clique sur le titre du post, sur lequel j&#8217;ai fait pointer l&#8217;url de la vidéo désormais, fait planter l&#8217;application, au lieu d&#8217;ouvrir IE [...]</p></blockquote>
<p style="text-align: justify;">Là, j&#8217;ai compris que je ne pouvais pas le laisser continuer à développer sans lui apprendre à lire et comprendre les exceptions.</p>
<p style="text-align: justify;">Je ne vais pas faire ici un cours complet sur ce qu&#8217;est une exception. Le but n&#8217;est pas que vous sachiez comment créer les vôtres, mais bien de comprendre ce qu&#8217;elles veulent dire. Sachez déjà que lorsqu&#8217;une exception est lancée dans votre application, cela signifie que quelque chose ne s&#8217;est pas passé comme prévu, et cela empêche votre programme de continuer à s&#8217;exécuter! En général, chez un débutant, cela signifie tout simplement le plantage et la fermeture de l&#8217;application illico!</p>
<p style="text-align: justify;">Si toutefois vous ne savez pas comment gérer ses exceptions, je vous invite grandement à lire ceci: <a href="http://msdn.microsoft.com/fr-fr/library/0yd65esw(v=vs.80).aspx">try-catch (C#)</a>.</p>
<p style="text-align: justify;"><span style="text-decoration: underline;">Revenons au problème:</span></p>
<p style="text-align: justify;">J&#8217;ai mon HyperlinkButton, et sa propriété NavigateUri pointe vers une url tout à fait correcte. Lorsque je lance l&#8217;application en debug, et que je clique sur le lien, il y a effectivement une erreur, et je me retrouve dans cette partie du code :</p>
<p><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-171.jpg" rel="lightbox[796]"><img class="aligncenter size-full wp-image-583" title="debug 17" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-171.jpg" alt="" width="651" height="145" /></a></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Ici, l’exception est traitée par le code généré par visual studio quand vous créez un projet (c&#8217;est un peu un cas particulier) mais en général quand il y a une exception, l’application s’arrête et un pop-up apparaît dans visual studio en pointant sur la ligne de code qui a déclenché l’exception !</p>
<div id="attachment_584" class="wp-caption aligncenter" style="width: 595px"><a href="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-18.jpg" rel="lightbox[796]"><img class="size-full wp-image-584 " title="debug 18" src="http://www.renauddumont.be/wp-content/uploads/2011/09/debug-18.jpg" alt="" width="585" height="208" /></a><p class="wp-caption-text">NullReferenceException signifie que vous essayez d&#39;appeler une méthode sur une référence null. Généralement, le type de l&#39;exception est assez explicite pour comprendre quel est le problème.</p></div>
<p style="text-align: justify;">Dans le cas du problème de navigation, ce n&#8217;est à première vue pas aussi simple. Mais les techniques apprises plus haut vont vous permettre de vous en sortir sans difficulté!</p>
<p style="text-align: justify;">Si vous exploriez le paramètre « e », vous verriez dans e.Exception.Message la valeur : <em>{&laquo;&nbsp;Navigation is only supported to relative URIs that are fragments, or begin with &#8216;/&#8217;, or which contain &#8216;;component/&#8217;.\r\nParameter name: uri&nbsp;&raquo;}</em>.</p>
<p style="text-align: justify;">On comprends donc bien que l’HyperlinkButton ne permet tout simplement pas de naviguer vers une page web mais uniquement vers des pages de l&#8217;application même.</p>
<p><em>Matthieu Vandenhende apporte une petite correction dans les commentaires! N&#8217;hésitez pas à visiter <a href="http://blog.devillu.com">son blog</a>. C&#8217;est plein de bons conseils sur le développement Windows Phone!</em></p>
<blockquote><p> Il est tout à fait possible de naviguer vers une page web depuis un HyperLinkButton. La solution est de préciser comment va s’ouvrir la page avec l&#8217;attribut TargetName. Ex:</p>
<pre class="brush:csharp">&lt;HyperlinkButton Content="Devillu BLOG"
                 NavigateUri="http://blog.devillu.com" TargetName="_blank" /&gt;</pre>
</blockquote>
<p style="text-align: justify;">Voilà, donc, comment Visual Studio peut vous permettre de mieux comprendre les problèmes rencontrés, et vous aider à vous corriger <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h4 style="text-align: justify;">La solution, en bonus! (pour ceux que ça intéresse <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</h4>
<p style="text-align: justify;">Pour naviguer vers une page web sur Windows Phone 7, il faut utiliser l&#8217;un des nombreux <strong>launchers</strong> <a href="http://msdn.microsoft.com/en-us/library/ff769550(v=vs.92).aspx">disponibles dans le SDK</a>. Il s&#8217;agit du <strong>WebBrowserTask</strong>.</p>
<pre class="brush:csharp">WebBrowserTask webBrowserTask = new WebBrowserTask();

webBrowserTask.Uri = new Uri("http://msdn.microsoft.com", UriKind.Absolute);

webBrowserTask.Show();</pre>
<p>Source: Renaud Dumont <a href="http://www.renauddumont.be/2011/le-b-a-ba-du-debug-avec-visual-studio">http://www.renauddumont.be/2011/le-b-a-ba-du-debug-avec-visual-studio</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/le-b-a-ba-du-debug-avec-visual-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment utiliser Bing Search dans vos applications</title>
		<link>http://www.wp7team.com/comment-utiliser-bing-search-dans-vos-applications/</link>
		<comments>http://www.wp7team.com/comment-utiliser-bing-search-dans-vos-applications/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 17:06:45 +0000</pubDate>
		<dc:creator>Sogalas</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=787</guid>
		<description><![CDATA[Ces derniers jours, lors de mon développement, j&#8217;ai été amené à implémenter une recherche dans mon application. J&#8217;ai donc entamé quelques recherches à ce sujet et j&#8217;ai décidé d&#8217;utiliser Bing Search. J&#8217;ai été agréablement surpris de la simplicité de mise en place et d&#8217;utilisation de ce service. Je vais vous expliquer comment le mettre en<a href="http://www.wp7team.com/comment-utiliser-bing-search-dans-vos-applications/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p>Ces derniers jours, lors de mon développement, j&#8217;ai été amené à implémenter une recherche dans mon application. J&#8217;ai donc entamé quelques recherches à ce sujet et j&#8217;ai décidé d&#8217;utiliser Bing Search.<br />
J&#8217;ai été agréablement surpris de la simplicité de mise en place et d&#8217;utilisation de ce service. Je vais vous expliquer comment le mettre en place.</p>
<p>La première étape est de se créer une clé pour l&#8217;api de bing. Pour se faire, rendez-vous sur la page : <a href="http://www.bing.com/developers/default.aspx">http://www.bing.com/developers/default.aspx</a> . Une fois sur cette page, loguez vous avec votre LIVE ID grâce au bouton &laquo;&nbsp;Sign in&nbsp;&raquo;. Il vous reste donc maintenant à cliquer sur &laquo;&nbsp;Get started by applying for an AppID now.&nbsp;&raquo;. Une fois les champs complétés et les Terms of use approuvés, cliquez sur &laquo;&nbsp;Agree&nbsp;&raquo; et vous obtiendrez vos clé API.</p>
<p>Maintenant ajoutons une référence à BingService dans notre application. Faites un clique droit sur votre projet et choisissez &laquo;&nbsp;Add Service Reference&nbsp;&raquo;.<br />
<a href="http://blog.devillu.com/wp-content/uploads/2011/09/1.png" rel="lightbox[787]"><img class="aligncenter size-medium wp-image-445" title="1" src="http://blog.devillu.com/wp-content/uploads/2011/09/1-281x300.png" alt="" width="281" height="300" /></a><br />
Ceci fait, une fenêtre va s&#8217;ouvrir. Renseignez l&#8217;adresse suivante dans &laquo;&nbsp;Address&nbsp;&raquo; : http://api.search.live.net/search.wsdl?Appid=VOTRECLEAPI    . Ensuite, cliquez sur GO. Dans &laquo;&nbsp;Services&nbsp;&raquo; devrait alors s&#8217;afficher BingService. Renseignez maitenant un nom de namespace (ex : BingService) et cliquez sur OK.</p>
<p><a href="http://blog.devillu.com/wp-content/uploads/2011/09/2.png" rel="lightbox[787]"><img class="aligncenter size-medium wp-image-446" title="2" src="http://blog.devillu.com/wp-content/uploads/2011/09/2-300x242.png" alt="" width="300" height="242" /></a></p>
<p>Maintenant, créez le code votre interface. Je vous mets le code du pivot IMAGE de mon application. Je vous passe les explications, c&#8217;est une listbox très simple (voir screen pour le résultat)</p>
<pre class="brush:csharp"> &lt;controls:PivotItem Header="images"&gt;
                &lt;Grid&gt;
                    &lt;StackPanel Orientation="Horizontal" VerticalAlignment="Top"&gt;
                        &lt;TextBox x:Name="_searchBox" Width="350" /&gt;
                        &lt;Button x:Name="_searchButton" Content="GO" Click="_searchButton_Click" /&gt;
                    &lt;/StackPanel&gt;

                    &lt;ListBox x:Name="_resultListBox" Margin="0,78,0,0"&gt;
                        &lt;ListBox.ItemTemplate&gt;
                            &lt;DataTemplate&gt;
                                &lt;StackPanel Orientation="Horizontal"&gt;
                                    &lt;Image x:Name="_listboxImage" toolkit:TiltEffect.IsTiltEnabled="True"
                                           Width="200" Height="200"/&gt;
                                &lt;/StackPanel&gt;
                            &lt;/DataTemplate&gt;
                        &lt;/ListBox.ItemTemplate&gt;
                        &lt;ListBox.ItemsPanel&gt;
                            &lt;ItemsPanelTemplate&gt;
                                &lt;toolkit:WrapPanel Orientation="Horizontal" /&gt;
                            &lt;/ItemsPanelTemplate&gt;
                        &lt;/ListBox.ItemsPanel&gt;
                    &lt;/ListBox&gt;

                    &lt;toolkit:PerformanceProgressBar x:Name="_progressBar" IsIndeterminate="False"/&gt;
                &lt;/Grid&gt;
 &lt;/controls:PivotItem&gt;</pre>
<p>Ce code vous donnera donc ceci :</p>
<p><a href="http://blog.devillu.com/wp-content/uploads/2011/09/3.png" rel="lightbox[787]"><img class="aligncenter size-medium wp-image-447" title="3" src="http://blog.devillu.com/wp-content/uploads/2011/09/3-164x300.png" alt="" width="164" height="300" /></a></p>
<p>Passons donc maintenant aux choses intéressantes, c&#8217;est à dire le code qui sera exécuté au click du bouton &laquo;&nbsp;GO&nbsp;&raquo;.</p>
<pre class="brush:csharp"> private void LaunchSearchImage()
        {
            BingPortTypeClient clientImage = new BingPortTypeClient();
            SearchRequest request = new SearchRequest();

            //Renseignemet obligatoire
            request.AppId = APIKEY; //Par exemple : APIKEY = "AD862B3DA164DE3A642C43E87569276ED2E52FCB"
            request.Sources = new SourceType[] { SourceType.Image }; //Ce que l'on veut rechercher (on peut rechercher plusieurs sources en même temps)
            request.Query = _searchBox.Text; //Notre texte recherché

            //Renseignement optionel
            request.Image = new ImageRequest();
            request.Image.Count = 40; //Nombre d'élément que l'on veut récupérer
            request.Image.CountSpecified = true;

            clientImage.SearchCompleted += new System.EventHandler&lt;SearchCompletedEventArgs&gt;(clientImage_SearchCompleted);
            clientImage.SearchAsync(request);
        }</pre>
<p>Je pense que le code est vraiment assez simple et les commentaires suffisent pour le comprendre.</p>
<p>Pour finir, on va donc récupérer les images et les afficher dans notre application</p>
<pre class="brush:csharp"> void clientImage_SearchCompleted(object sender, SearchCompletedEventArgs e)
        {
            SearchResponse response = e.Result;
            ImageResponse imageResponse = e.Result.Image;

            _resultListBox.Items.Clear(); //On nettoi notre listbox
            if (response.Image.Results != null)
            {
               //On va parcourir notre liste de résultat pour récupérer les images.
                foreach (ImageResult bingImage in response.Image.Results)
                {
                    Image image = new Image();
                    image.Source = new BitmapImage(new Uri(bingImage.Thumbnail.Url));
                    image.Stretch = System.Windows.Media.Stretch.UniformToFill;
                    image.Margin = new System.Windows.Thickness(5);
                    image.Width = 200;
                    image.Height = 200;
                    _resultListBox.Items.Add(image); //On ajoute l'image créé à notre listbox.
                }
            }
            else
                MessageBox.Show("Aucun résultats");
        }</pre>
<p>Et voila ! Vous avez mis en place une recherche avec bing search !</p>
<p>Je trouve vraiment que c&#8217;est très simple à mettre en place et vraiment très propre. J&#8217;espère que ce tutoriel vous aidera. Si vous avez un problème, je mets les sources de l’exemple ci dessous. (Attention, n&#8217;utilisez pas la clé API qui se trouve dans cet exemple pour votre application <img src='http://www.wp7team.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<div id="attachment_708" class="wp-caption aligncenter" style="width: 100px"><a title="Code source de l'application" href="http://bit.ly/recherchebing"><img class="size-thumbnail wp-image-708 " title="Code source" src="http://www.wp7team.com/wp-content/uploads/2011/03/Attatchment-150x150.png" alt="Code source" width="90" height="90" /></a><p class="wp-caption-text">Code source de l&#39;application</p></div>
<p>Source : Devillu  <a href="http://blog.devillu.com/home/?p=440">http://blog.devillu.com/home/?p=440</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/comment-utiliser-bing-search-dans-vos-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[WP7] Créer une MessageBox personnalisée, sans son et sans vibration</title>
		<link>http://www.wp7team.com/wp7-creer-une-messagebox-personnalise-sans-sons-et-sans-vibrations/</link>
		<comments>http://www.wp7team.com/wp7-creer-une-messagebox-personnalise-sans-sons-et-sans-vibrations/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 07:38:49 +0000</pubDate>
		<dc:creator>Sogalas</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://www.wp7team.com/?p=779</guid>
		<description><![CDATA[Bonjour, Je suis sur que certains d&#8217;entre vous se sont déjà dis qu&#8217;ils aimeraient une MessageBox qui ne produise pas de son, ni de vibration (comme Microsoft l&#8217;utilise dans certaines applications). Avec le control MessageBox de Silverlight, il n&#8217;est pas possible de faire cela. De plus, il serait intéressant de pouvoir faire des boutons personnalisés<a href="http://www.wp7team.com/wp7-creer-une-messagebox-personnalise-sans-sons-et-sans-vibrations/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Je suis sur que certains d&#8217;entre vous se sont déjà dis qu&#8217;ils aimeraient une MessageBox qui ne produise pas de son, ni de vibration (comme Microsoft l&#8217;utilise dans certaines applications). Avec le control MessageBox de Silverlight, il n&#8217;est pas possible de faire cela.</p>
<p>De plus, il serait intéressant de pouvoir faire des boutons personnalisés sur notre MessageBox &#8230; et encore une fois avec Silverlight ce n&#8217;est pas possible. Pour ce faire voici un petit tutorial ou nous allons créer un control personnalisé grâce aux services XNA.</p>
<p>Pour ce faire, créons simplement une nouvelle classe que nous allons nommé &#8216;SilenceMessageBox&#8217; et dont la structure est la suivante :</p>
<pre class="brush:csharp">namespace WindowsPhoneMessageboxExample.Controls
{
    public enum SilenceMessageBoxResult
    {
        LeftButton,
        RightButton,
        None
    }
    public static class SilenceMessageBox
    {
        /// &lt;summary&gt;
        /// Displays a message box that contains the specified text, title bar caption, and two response buttons.
        /// &lt;/summary&gt;
        /// &lt;param name="messageBoxText"&gt;The message to display.&lt;/param&gt;
        /// &lt;param name="caption"&gt;The title of the message box.&lt;/param&gt;
        /// &lt;param name="button1"&gt;The title of the first button.&lt;/param&gt;
        /// &lt;param name="button2"&gt;The title of the second button. Pass null if you only want one button.&lt;/param&gt;
        /// &lt;returns&gt;A value that indicates the user's response to the message.&lt;/returns&gt;
        public static SilenceMessageBoxResult Show(string messageBoxText, string caption, string LeftButton, string RightButton)
        {
            int? returned = null;
            using (var mre = new System.Threading.ManualResetEvent(false))
            {
                string[] buttons;
                if (RightButton == null)
                    buttons = new string[] { LeftButton };
                else
                    buttons = new string[] { LeftButton, RightButton };

                Microsoft.Xna.Framework.GamerServices.Guide.BeginShowMessageBox(
                    caption,
                    messageBoxText,
                    buttons,
                    0,
                    Microsoft.Xna.Framework.GamerServices.MessageBoxIcon.None,
                    result =&gt;
                    {
                        returned = Microsoft.Xna.Framework.GamerServices.Guide.EndShowMessageBox(result);
                        mre.Set();
                    }, null);

                mre.WaitOne();
            }

            if (!returned.HasValue)
                return SilenceMessageBoxResult.None;
            else if (returned == 0)
                return SilenceMessageBoxResult.LeftButton;
            else if (returned == 1)
                return SilenceMessageBoxResult.RightButton;
            else
                return SilenceMessageBoxResult.None;
        }
    }
}</pre>
<p>PS : Il ne faut pas oublier d&#8217;ajouter la référence &#8216;Microsoft.Xna.Framework.GamerServices&#8217; au projet.</p>
<p>Maintenant, rien de plus simple quand vous voulez créer une MessageBox personnalisée, on va faire appel à notre classe &#8216;SilenceMessageBox&#8217; :</p>
<pre class="brush:csharp">   if (SilenceMessageBox.Show("Mon message", "Mon titre", "Je valide", "Pas d'accord") == SilenceMessageBoxResult.LeftButton)
            {
                // Ecrire en console debug
                Debug.WriteLine("Ok, c'est validé !");
            }</pre>
<p>Nous avons donc la structure .Show(&laquo;&nbsp;Votre Message&nbsp;&raquo;, &laquo;&nbsp;Votre titre&nbsp;&raquo;, &laquo;&nbsp;Message du bouton de gauche&nbsp;&raquo;, &laquo;&nbsp;Message du bouton de droite&nbsp;&raquo;)</p>
<div id="attachment_431" class="wp-caption aligncenter" style="width: 190px"><a href="http://blog.devillu.com/wp-content/uploads/2011/07/exampleMessageBox.png" rel="lightbox[779]"><img class="size-medium wp-image-431" title="SilenceMessageBox" src="http://blog.devillu.com/wp-content/uploads/2011/07/exampleMessageBox-180x300.png" alt="SilenceMessageBox" width="180" height="300" /></a><p class="wp-caption-text">SilenceMessageBox</p></div>
<p>Pour ceux qui préfèrent un bel exemple fonctionnel, je mets les sources d&#8217;un projet exemple ci dessous :</p>
<div id="attachment_708" class="wp-caption aligncenter" style="width: 100px"><a title="Code source de l'application" href="http://bit.ly/mS6NqC"><img class="size-thumbnail wp-image-708 " title="Code source" src="http://www.wp7team.com/wp-content/uploads/2011/03/Attatchment-150x150.png" alt="Code source" width="90" height="90" /></a><p class="wp-caption-text">Code source de l&#39;application</p></div>
<p>Source : Devillu  <a href="http://blog.devillu.com/home/?p=429">http://blog.devillu.com/home/?p=429</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/wp7-creer-une-messagebox-personnalise-sans-sons-et-sans-vibrations/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ajouter un ContextMenu à votre application</title>
		<link>http://www.wp7team.com/contextmenu/</link>
		<comments>http://www.wp7team.com/contextmenu/#comments</comments>
		<pubDate>Sun, 22 May 2011 13:30:15 +0000</pubDate>
		<dc:creator>Kévin Rapaille</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[ContextMenu]]></category>
		<category><![CDATA[toolkit]]></category>
		<category><![CDATA[windows phone]]></category>

		<guid isPermaLink="false">http://blog.daily-dev.com/?p=196</guid>
		<description><![CDATA[Dans une application, avoir un petit menu contextuel, c&#8217;est toujours sympa (vous savez, ce petit menu déroulant qui apparaît lorsqu&#8217;on reste appuyé sur une application dans le menu démarrer par exemple) ! Voici comment procéder pour en ajouter un à votre application. Tout d&#8217;abord, il ne faut pas oublier d&#8217;ajouter le toolkit. Voici comment procéder : Ajouter la référence à l&#8217;assembly Microsoft.Phone.Controls.Toolkit Dans<a href="http://www.wp7team.com/contextmenu/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p>Dans une application, avoir un petit menu contextuel, c&#8217;est toujours sympa (vous savez, ce petit menu déroulant qui apparaît lorsqu&#8217;on reste appuyé sur une application dans le menu démarrer par exemple) ! Voici comment procéder pour en ajouter un à votre application.</p>
<p>Tout d&#8217;abord, il ne faut pas oublier d&#8217;ajouter le <strong>toolkit</strong>. Voici comment procéder :</p>
<ol>
<li>Ajouter la référence à l&#8217;assembly Microsoft.Phone.Controls.Toolkit</li>
<li>Dans votre xaml, ajouter cette ligne pour déclarer le toolkit :
<pre class="brush:csharp">xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"</pre>
</li>
</ol>
<p>Ensuite voici un exemple de <strong>ContextMenu </strong>dans une<strong> ListBox</strong>:</p>
<pre class="brush:xml">&lt;ListBox Margin="0,0,-12,0" ItemsSource="{Binding Participants}"&gt;
	&lt;ListBox.ItemTemplate&gt;
		&lt;DataTemplate&gt;
			&lt;StackPanel Margin="0,0,0,17" Width="432" Background="#FFF3F3EB"&gt;
				&lt;toolkit:ContextMenuService.ContextMenu&gt;
					&lt;toolkit:ContextMenu&gt;
						&lt;toolkit:MenuItem Header="Modifier" Click="menuItemEdit_Click"/&gt;
						&lt;toolkit:MenuItem Header="Supprimer" Click="menuItemDelete_Click"/&gt;
					&lt;/toolkit:ContextMenu&gt;
				&lt;/toolkit:ContextMenuService.ContextMenu&gt;
				&lt;TextBlock Text="{Binding Nom}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}" Foreground="Black"/&gt;
				&lt;TextBlock Text="{Binding ComptePour}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}" Foreground="#99000000"/&gt;
			&lt;/StackPanel&gt;
		&lt;/DataTemplate&gt;
	&lt;/ListBox.ItemTemplate&gt;
&lt;/ListBox&gt;</pre>
<p>Dans cet exemple, le <strong>ContextMenu </strong>portera sur le <em>StackPanel </em>de chacun des items de la <em>ListBox </em>comme le montre l&#8217;image ci dessous.</p>
<div class="mceTemp mceIEcenter" style="text-align: left;">
<dl id="attachment_197" class="wp-caption aligncenter" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://blog.daily-dev.com/wp-content/uploads/2011/03/Capture.png" rel="lightbox[196]"><img class="size-medium wp-image-197" title="Capture" src="http://blog.daily-dev.com/wp-content/uploads/2011/03/Capture-300x165.png" alt="" width="300" height="165" /></a></dt>
<dd class="wp-caption-dd">Que l&#8217;utilisateur appuie sur &laquo;&nbsp;Camping&nbsp;&raquo; ou &laquo;&nbsp;7jour(s)&nbsp;&raquo;, l&#8217;effet sera le même.</dd>
</dl>
</div>
<blockquote>
<p style="text-align: left;">Vous remarquerez que le background du <em>StackPanel </em>est précisé alors que le background de ma page est déjà de cette couleur. Cela n&#8217;est pas anodin. En effet, si vous ne le précisez pas à nouveau, lorsque l&#8217;utilisateur fera apparaître le <strong>ContextMenu</strong><strong> </strong>votre objet deviendra tout noir sans aucune raison apparente.</p>
</blockquote>
<p style="text-align: left;">Dans votre <em>menuItemEdit_Click</em>, si vous souhaitez récupérer l&#8217;objet via lequel l&#8217;utilisateur a accédé au menu vous pouvez faire ceci :</p>
<pre class="brush:csharp">TypeOfMyObject myObject = ((sender as MenuItem).DataContext) as TypeOfMyObject;</pre>
<p>Et pour ceux qui comprennent mieux avec un petit exemple, voici les sources de l&#8217;exemple :</p>
<div id="attachment_708" class="wp-caption aligncenter" style="width: 100px"><a title="Code source de l'application" href="http://www.wp7team.net/upload/ContextMenuExemple.zip"><img class="size-thumbnail wp-image-708 " title="Code source" src="http://www.wp7team.com/wp-content/uploads/2011/03/Attatchment-150x150.png" alt="Code source" width="90" height="90" /></a><p class="wp-caption-text">Code source de l&#39;application</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/contextmenu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jouer un son en silverlight sur windows phone 7</title>
		<link>http://www.wp7team.com/jouer-un-son-en-silverlight/</link>
		<comments>http://www.wp7team.com/jouer-un-son-en-silverlight/#comments</comments>
		<pubDate>Mon, 09 May 2011 07:30:18 +0000</pubDate>
		<dc:creator>Sogalas</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>

		<guid isPermaLink="false">http://devillu.com/blog/?p=96</guid>
		<description><![CDATA[Avant toute chose, il faut importer le FrameWork XNA audio using Microsoft.Xna.Framework.Audio; Dans notre cas nous avons utilisé le SoundEffect pour récupérer et exécuter le son. On déclare donc le son private SoundEffect monSon; Ensuite, dans le constructeur de la page, on va charger le son dans la variable créée auparavant avec la méthode &#171;&#160;Load&#160;&#187;.<a href="http://www.wp7team.com/jouer-un-son-en-silverlight/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p>Avant toute chose, il faut importer le FrameWork XNA audio</p>
<pre class="brush:csharp">using Microsoft.Xna.Framework.Audio;</pre>
<p>Dans notre cas nous avons utilisé le SoundEffect pour récupérer et exécuter le son. On déclare donc le son</p>
<pre class="brush:csharp"> private SoundEffect monSon;</pre>
<p>Ensuite, dans le constructeur de la page, on va charger le son dans la variable créée auparavant avec la méthode &laquo;&nbsp;Load&nbsp;&raquo;. Le son se trouve dans un dossier Sounds que nous avons créé.</p>
<pre class="brush:csharp">LoadSound("Sounds/monSon.wav", out monSon);</pre>
<p>Pour pouvoit utiliser le LoadSound, voici la méthode qui est a créer:</p>
<pre class="brush:csharp">//&lt;summary&gt;
//Loads a wav file into an XNA Framework SoundEffect.
//&lt;/summary&gt;
//&lt;param name="SoundFilePath"&gt;Relative path to the wav file.&lt;/param&gt;
//&lt;param name="Sound"&gt;The SoundEffect to load the audio into.&lt;/param&gt;
private void LoadSound(String SoundFilePath, out SoundEffect Sound)
 {
   // For error checking, assume we'll fail to load the file.
   Sound = null;

   try
   {
       // Holds informations about a file stream.
       StreamResourceInfo SoundFileInfo = App.GetResourceStream(
                         new Uri(SoundFilePath, UriKind.Relative));

       // Create the SoundEffect from the Stream
       Sound = SoundEffect.FromStream(SoundFileInfo.Stream);
   }
   catch (NullReferenceException)
   {
       // Display an error message
       MessageBox.Show("Couldn't load sound " + SoundFilePath);
   }
}</pre>
<p>Ensuite, dans votre constructeur, vu qu&#8217;on travaille avec le framework XNA, il faut simuler la boucle du xna. On réalise ceci de la manière suivante :</p>
<pre class="brush:csharp">            // Timer to simulate the XNA game loop (SoundEffect
            // classes are from the XNA Framework)
            DispatcherTimer XnaDispatchTimer = new DispatcherTimer();
            XnaDispatchTimer.Interval = TimeSpan.FromMilliseconds(50);

            // Call FrameworkDispatcher.Update to update
            // the XNA Framework internals.
            XnaDispatchTimer.Tick += delegate { try {
                        FrameworkDispatcher.Update();
                        } catch { } };

            // Start the DispatchTimer running.
            XnaDispatchTimer.Start();</pre>
<p>Voila, il ne vous reste plus qu&#8217;a lancer votre son ou vous le voulez, dans cet exemple, je le mets sur le click d&#8217;un bouton</p>
<pre class="brush:csharp">        private void button1_Click(object sender, RoutedEventArgs e)
        {
            monSon.Play();
        }</pre>
<p>Now, enjoy !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/jouer-un-son-en-silverlight/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ApplicationBarIconButton différent selon le pivotItem</title>
		<link>http://www.wp7team.com/changement-de-applicationbariconbutton-selon-le-pivotite/</link>
		<comments>http://www.wp7team.com/changement-de-applicationbariconbutton-selon-le-pivotite/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 16:40:53 +0000</pubDate>
		<dc:creator>Kévin Rapaille</dc:creator>
				<category><![CDATA[Tutoriaux]]></category>
		<category><![CDATA[appBar]]></category>
		<category><![CDATA[pivot]]></category>
		<category><![CDATA[windows phone]]></category>

		<guid isPermaLink="false">http://blog.daily-dev.com/?p=174</guid>
		<description><![CDATA[Lorsque que l&#8217;on réalise une application, on a parfois envie que nos petits boutons de l&#8217;AppBar ne soient pas les même selon le pivotItem dans lequel on se situe. Voici une solution : Tout d&#8217;abord on crée les boutons : public MaPage() { InitializeComponent(); // Initialisation des ApplicationBarIconButton button1 = new ApplicationBarIconButton(new Uri("/icons/appbar.check.rest.png", UriKind.Relative)); button1.Text<a href="http://www.wp7team.com/changement-de-applicationbariconbutton-selon-le-pivotite/" class="more-link">Lire la suite</a>]]></description>
			<content:encoded><![CDATA[<p>Lorsque que l&#8217;on réalise une application, on a parfois envie que nos petits boutons de l&#8217;AppBar ne soient pas les même selon le pivotItem dans lequel on se situe. Voici une solution :</p>
<p>Tout d&#8217;abord on crée les boutons :</p>
<pre class="brush:csharp">public MaPage()
{
	InitializeComponent();

	// Initialisation des ApplicationBarIconButton
	button1 = new ApplicationBarIconButton(new Uri("/icons/appbar.check.rest.png", UriKind.Relative));
	button1.Text = "Bouton 1";
	button1.Click += new EventHandler(appbar_bt_validation_Click);

	button2 = new ApplicationBarIconButton(new Uri("/icons/appbar.stop.rest.png", UriKind.Relative));
	button2.Text = "Bouton 2";
	button2.Click += new EventHandler(appbar_bt_deco_Click);

	button3 = new ApplicationBarIconButton(new Uri("/icons/appbar.add.rest.png", UriKind.Relative));
	button3.Text = "Bouton 3";
	button3.Click += new EventHandler(ApplicationBarIconButton_Click);
	// fin de l'initialisation

	DataContext = App.ViewModel;
	this.Loaded += new RoutedEventHandler(MaPage_Loaded);
}</pre>
<address>Notez qu&#8217;il faut que les icônes aient bien été ajoutées à votre projet au préalable.</address>
<p>Ensuite, dans le xaml, il vous suffit de prendre en compte l&#8217;event <strong>SelectionChanged</strong> de votre pivot :</p>
<pre class="brush:xml">&lt;controls:Pivot SelectionChanged="Pivot_SelectionChanged"&gt;</pre>
<p>Et pour finir, vous retournez dans le c#  et vous ajoutez ceci :</p>
<pre class="brush:csharp">private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
	switch (((Pivot)sender).SelectedIndex)
	{
		case 0:
			this.ApplicationBar.Buttons.Clear();
			this.ApplicationBar.Buttons.Add(button1);
			break;

		case 1:
			this.ApplicationBar.Buttons.Clear();
			this.ApplicationBar.Buttons.Add(button2);
			this.ApplicationBar.Buttons.Add(button3);
			break;
	}

}</pre>
<address>Dans ce cas, si l&#8217;on se trouve dans le premier pivotItem, on verra apparaître le button1, si l&#8217;on se trouve dans le second, les button2 et 3.</address>
]]></content:encoded>
			<wfw:commentRss>http://www.wp7team.com/changement-de-applicationbariconbutton-selon-le-pivotite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
