J'ai récemment eu besoin de contrôles personnalisables de type ColorPicker et ColorChooser, n'en trouvant pas, je les ai conçu from scratch, voici une démo.
Ceux-ci sont en version bêta mais je pense fournir une version finale d'ici le 15 novembre. En attendant, si vous souhaitez tester ces contrôles et télécharger la dll pour test dans SL3, c'est ici.
Ps : le plugin Silverlight pour WordPress fourni par Tim Heuer est vraiment performant et très utile, merci à lui, je n'utiliserai plus que cette solution
Plusieurs MVPs et MSP, se connaissant depuis quelques années maintenant, ont décidé d’unir leurs efforts pour proposer un ensemble de Live Meetings destinés à une audience de développeurs. Voici la liste des Live Meetings planifiés, n’hésitez pas à y participer en vous inscrivant...
Voici une WebTV Silverlight comme on peut voir sur de nombreux sites. Je la développe en ce moment à mes heures perdues. L'idée par la suite est d'en faire un élément intégré et participatif de Tweened. Je mettrai un maximum de contenu vidéo dès la sortie de Expression v3 mais aussi des tutoriaux sur Expression Design. Elle est pour l'instant très sommaire mais je prévois un back-office et j'ajouterai la notion de catégories rapidement. Bien sûr, ce post a aussi une volonté de partage et je mets le code à disposition au sein de ce fichier zip. Je l'ai simplifié au maximum.
En tant que développeur ou même intégrateur vous avez sans déjà entendu parler de modèle événementiel. Le modèle événementiel d'un langage logique comme par exemple C# est crucial car c'est lui qui permet les interactions utilisateur.
Le modèle événementiel repose sur deux principes importants :
• Le premier est le principe de diffusion d’événements, par exemple lorsque vous cliquez sur un bouton celui-ci diffuse un évènement Click
• Le second principe est celui d’écouteur. Il est bien beau de pouvoir diffuser des évènements, cependant il faut être à l’écoute de ceux-ci pour déclencher une action adéquate. L’objet qui réagit aux événements diffusés est appelé écouteur. En générale, l’écouteur est une méthode comme par exemple la méthode Page_Loaded.
On retrouve ces deux principes dans la vie réelle, voici un exemple :
• Vous décidez de prendre un abonnement à un site Web d’annonces immobilières, le fait de vous abonner fait de vous un écouteur. En effet, à chaque nouvelle annonce, vous recevrez un email d’information concernant le bien immobilier. Vous écoutez le site Web qui agit en tant que diffuseur de l’évènement « nouvelle annonce mise en ligne ». A chaque nouvelle annonce reçue vous décidez ou non de visiter le bien. Ce qui correspond bien à une action en retour.
• Importante mais souvent oubliée cette phase est pourtant très importante : lorsque vous avez trouvé le bien le plus approprié, vous décidez d’arrêter la souscription à ce site, dès lors vous ne recevrez plus d’email. Autrement dit vous supprimez l’écouteur
C’est exactement ce qui arrive lorsque vous développez pour Silverlight. C# voici les deux mêmes méthodes écrites différemment, vous remarquerez que l’écriture est nettement plus appropriée et claire, de plus vous aurez une aide à la complétion via l’IntelliSense :
Il est important de connaitre au moins ces bases car nous allons aborder un point assez spécifique aux langages de haut niveaux. En fait lorsqu'un objet graphique diffuse un événement ce n'est pas forcément l'objet auquel on a souscrit un écouteur. Je m'explique : lorsqu'on crée une série de menus au sein d'une boucle, on ne souhaite peut-être pas à chaque fois ajouter l'écoute du click sur chacun de ces menus. Pourquoi ?
1 - parce que cela est assez gourmant en performance et en mémoire
2 - parce que pour chaque menu il faudra supprimer l'écoute si besoin
Pour éviter de mettre un écouteur sur chaque menu, il suffit simplement de mettre un écouteur sur le conteneur de ceux-ci. En fait lorsque vous souscrivez un écouteur à un conteneur d'objet lorsque l'événement est diffusé vous avez la possibilité de réupérer l'objet source diffusant l'événement au sein du conteneur. je vous ai fait un joli schéma tout en haut.
Je vous donne également un exemple d'utilisation ici :
privatevoid CreateMenu(){
var i =0;foreach(string menu in myMenus){
Debug.WriteLine(menu);
var monMenu =new Menu();//monButton.Content = menu;
monMenu.Name= menu +"_btn";
monMenu.Titre= menu;
monMenu.num= i;
monMenu.Height=22;
monMenu.Margin=new Thickness(0, 10, 0, 0);
i++;
myStack.Children.Add(monMenu);//ici on évite d'écrire la chose en dessous :://monMenu.MouseLeftButtonUp += new MouseButtonEventHandler(monMenu_MouseLeftButtonUp);}
myStack.MouseLeftButtonUp+=new MouseButtonEventHandler(monMenu_MouseLeftButtonUp);}void monMenu_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){//en premier je teste si je clique bien sur un objet de type Menu
Debug.WriteLine(e.OriginalSource);//e.OriginalSource renvoie bien l'objet source qui diffuse l'événement
Debug.WriteLine("le nom :: "+(e.OriginalSourceas Menu).Name);int actualMenu =(e.OriginalSourceas Menu).num;
rubTo.ContinueTo((double)(actualMenu *-215));
rubTween.Start();}
Il est à noter qu'il est possible d'arrêter la propagation événementielle dans certains cas cela est vraiment pratique car la propriété MouseChildren n'existe pas à priori en C#. Pour arrêter la propagation événementiel il suffira simplement de faire :
void monMenu_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){//là j'arrête la propagation
e.Handled= true;}
Le project Moonlight 1 est disponible depuis le 20 janvier au téléchargement. Pour rappel Moonlight est un portage du lecteur Silverlight sur des systèmes non supportés nativement. Ce projet repose sur le framework Mono qui est un portage de .Net sur plusieurs distributions du système Linux dont MacOS X. Ce projet a trois objectifs :
Donner un environnement de développement Silverlight sur d'autres plate-forme que Windows
Porter le lecteur Silverlight sur Linux
permettre la création d'applications Desktop Silverlight sur linux un peu comme Air.
Il est clair que pour un lecteur multi-système comme Silverlight, proposer un environnement de développement autre que Windows pourrait être judicieux. Ainsi l'application du Times ' Reader ressemble comme deux goutte d'eau à une application traditionnelle. Le moteur de texte de Silverlight étant vraiment très performant, celle-ci a été réalisable simplement et l'affichage de pavés de texte animés est fluide et vraiment agréable.vous pouvez la télécharger ici.
Il devrait subsister toujours cette période d'un an entre une version de Silverlight et une version de moonlight, voici la roadMap actuelle pour Moonlight 2 :
Je mets à disposition une série de très courts tutoriaux vidéos en HD h264 (1024 * 768) consacrés à Silverlight 2. Si vous êtes intégrateur ou web designer, ceux-ci vous permettront de rapidement prendre en main la techno. Si vous êtes plutôt développeur, les 3 ou 4 derniers tutos vous concerne. Si vous n'êtes ni l'un ni l'autre mais que vous êtes impactées dans un projet Silverlight, vous aurez au moins un aperçu des possibilités de celle-ci . Voici le lien vers le fichier zip les contenant(250Mo).
si vous débutez dans Silverlight 2, ce petit tuto vous apprendra à gérer le redimensionnement. On y évoque également l'intégration du plugin et l'objet Grid.
si vous souhaitez garder des interactions simples entre le code managé C# et Javascript voici un petit tuto. Je parle également du modèle de document qui permet de travailler plus simplement avec Silverlight 2.
voici le deuxième de la série, c'est une version longue qui explique simplement comment utiliser le VisualStateManager. Je mettrai bientôt plus de 16 vidéos Silverlight 2 (pour la rentrée) en attendant amusez-vous bien.
je travaille en ce moment sur un certain nombre de tutoriaux videos concernant Silverlight 2. Celui-ci est le premier d'une série de 15, les autres tutoriaux seront également disponibles sur FlashXpress.net. Vous y apprendrez l'utilisation de la librairie Tweened, le modèle de document Visual Studio 2008 contenant une intégration Javascript ainsi qu'une méthode pour déclencher les tweens via c#.