# Friday, March 13, 2009

Silverlight Contrib et Silverlight Extensions fusionnent

logo-slExt-ContrNous sommes fières d’annoncer aujourd’hui la fusion de Silverlight Contrib et Silverlight Extensions en un seul et unique projet ! Nous pensons que cette fusion apportera beaucoup de bénéfic es à la communauté. Cette combinaison permettra aux développeurs d’avoir un point unique pour rechercher des contrôles à intégrer dans leurs applications ainsi que pour en soumettre de nouveaux. Cette action réduira le temps passé dans chaque projet pour vous fournir des fonctionnalités équivalentes et nous permettra d’accélérer la cadence des releases.

Pendant la phase de consolidation du code, nous vous encourageons à nous soumettre vos retours ou problèmes à chaque projets. Nous fusionnerons les informations des deux projets lorsque le site commun sera ouvert et le nom final déterminé.

Quel nom allons-nous garder ? Cette décision vous appartient ! Vos votes détermineront le plus populaire. Assurez-vous que votre préférence soit prise en compte, votez ! Les votes seront acceptés jusqu’au 29 mars 2009 23:00 (GMT+1)

Nous vous tiendrons informé des évolutions sur chacun des blogs des 2 projets Silverlight Contrib et Silverlight Extensions.

Retrouvez ce post sur le site de Silverlight Contrib

Les équipes de slextensions et silverlight contrib.

#    Comments [0] |
# Friday, February 13, 2009

SLExtensions Converters – AlternateBackgroundConverter

Le projet SLExtensions commence à être assez conséquent. Je vais essayer de poster un peu plus régulièrement sur ce qu’il contient et compléter les exemples. Je commence donc cette série d’article par un des nombreux converter contenu dans le projet.

L’AlternateBackgroundConverter retourne un brush différent chaque fois que le converter est appelé.
Ce converter nécessite que la propriété ConverterParameter soit spécifiée lors du binding.
Le ConverterParameter peut être soit une string contenant une liste de couleurs séparées par des espaces soit une référence à un objet AlternateBackgroundConverterParameter.

  • Lorsqu’une string est passée, les couleurs peuvent être spécifiées au format argb sous forme hexadécimale (#RRGGBB ou #AARRGGBB) ou être un des nom de propriété existant dans la classe Colors (White, Red, Yellow, etc…)
  • Lorsqu’un AlternateBackgroundConverterParameter est passé, vous pouvez spécifier n’importe quel type de brush, SolidBrush, GradientBrush, VideoBrush, ImageBrush

 

<UserControl x:Class="SLExtensions.Showcase.PageAlternateConverter"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   xmlns:sled="clr-namespace:SLExtensions.Data;assembly=SLExtensions"

   xmlns:scControllers="clr-namespace:SLExtensions.Showcase.Controllers;assembly=SLExtensions.Showcase"

  >

    <UserControl.Resources>

 

        <sled:AlternateBrushConverter x:Key="alternateConverter" />

 

        <sled:AlternateBrushConverterParameter x:Key="alternateParameter" >

            <sled:AlternateBrushConverterParameter.Brushes>

                <SolidColorBrush Color="White"/>

                <LinearGradientBrush StartPoint="0.45666,0.185989" EndPoint="1.22116,0.185989">

                    <LinearGradientBrush.RelativeTransform>

                        <TransformGroup>

                            <SkewTransform CenterX="0.45666" CenterY="0.185989" AngleX="0.135522" AngleY="0"/>

                            <RotateTransform CenterX="0.45666" CenterY="0.185989" Angle="82.8625"/>

                        </TransformGroup>

                    </LinearGradientBrush.RelativeTransform>

                    <GradientStop Color="#80FFFFFF" Offset="0"/>

                    <GradientStop Color="#808C8A8C" Offset="0.62345"/>

                    <GradientStop Color="#8019161A" Offset="1"/>

                </LinearGradientBrush>

                <SolidColorBrush Color="Gainsboro"/>

                <SolidColorBrush Color="#FFDD22"/>

            </sled:AlternateBrushConverterParameter.Brushes>

        </sled:AlternateBrushConverterParameter>

    </UserControl.Resources>

    <StackPanel x:Name="LayoutRoot" Background="White" >

        <TextBlock Text="Alternating brush converter"/>

        <ItemsControl ItemsSource="ABCDEFGH">

            <ItemsControl.ItemTemplate>

                <DataTemplate>

                    <Grid Background="{Binding Path='', Converter={StaticResource alternateConverter}, ConverterParameter={StaticResource alternateParameter}}">

                        <TextBlock Text="{Binding}" />   

                    </Grid>

                </DataTemplate>

            </ItemsControl.ItemTemplate>

        </ItemsControl>

 

        <ItemsControl ItemsSource="ABCDEFGH" Margin="0,40,0,0">

            <ItemsControl.ItemTemplate>

                <DataTemplate>

                    <Grid Background="{Binding Path='', Converter={StaticResource alternateConverter}, ConverterParameter='White Gray #FFDD22'}">

                        <TextBlock Text="{Binding}" />

                    </Grid>

                </DataTemplate>

            </ItemsControl.ItemTemplate>

        </ItemsControl>

    </StackPanel>

</UserControl>

#    Comments [0] |
# Thursday, February 05, 2009

UCAYA Goodies

On ne l’arrête plus ! Vous pouvez maintenant retrouver les premiers goodies UCAYA sur le labs : http://labs.ucaya.com/goodies.aspx.

#    Comments [1] |

L’équipe s’est agrandie

UCAYA prend une réelle dimension graphique !

Depuis maintenant quelques mois JBay a rejoint l’équipe d’UCAYA. C’est maintenant lui qui est en charge de la Création visuelle et du Design.

Bienvenue à JBay !

#    Comments [0] |
# Saturday, January 31, 2009

Bonne Année 2009 !

Toute l’équipe d’UCAYA se joint à moi pour vous souhaiter une très bonne année !

Silverlight oblige nous avons un peu animé notre eCard ;-)

happynewyear2009-mailcard

#    Comments [0] |
# Tuesday, January 06, 2009

UCAYA Tour Next 6

::Au Sénégal::

Après un moment sans nouvelle photo, le voyage continue !

UCAYA-Tour-Senegal-1 UCAYA-Tour-Senegal-2

UCAYA-Tour-Senegal-3 UCAYA-Tour-Senegal-4

Nous vous invitons, heureux possesseurs de LA casquette UCAYA (100 exemplaires seulement existent ;-)), à nous envoyer des photos de tous les endroits merveilleux et/ou insolites que vous avez pu visiter avec votre casquette !

#    Comments [0] |
# Wednesday, December 17, 2008

Projet Silverlight "Being the Big Boss"

Depuis le 8 décembre la version 1 de www.beingthebigboss.com est en ligne !

 

Il s’agit d’un jeu de simulation économique et d’entreprise, à “But récréatif et pédagogique : Mettez vous dans la peau d'un PDG d'une multinationale et construisez un empire reconnu et respecté !”.

Being the Big Boss est réalisé pour la partie client en Silverlight 2. Pour la partie serveur SQL Server 2008, LinqToEntities et WCF pour la communication Client/Serveur.

Quelques infos supplémentaires :

- Côté Silverlight il s’appuie sur la librairie SLExtensions ;-)

- Le modèle UML a été créé avec ArgoUML

- La génération du mapping est réalisé avec EF.Wizard

Pour vous donner un avant goût :

#    Comments [0] |
# Saturday, October 25, 2008

Entity Framework – Génération du mapping et du sql

Ayant pas mal joué avec NHibernate, je voulais tester l’ORM de Microsoft : ADO.Net Entity Framework. Une bonne partie des exemples qui existent sur internet partent d’un model de base de données existant et génère le fichier de mapping. C’est très pratique pour partir d’un existant, mais ne sert pas lorsqu’on veut créer un nouveau projet.

J’ai apprécié le designer de classes, mais ne s’avère pas très pratique pour modeler un projet entier. Il ne permet pas par exemple d’avoir plusieurs diagrammes de classes. Ayant déjà créé mon propre outil de génération pour NHibernate (NHib.Wizard), je suis reparti de ce projet pour faire de même avec Entity Framework.

Je peux donc maintenant partir d’un modeleur UML (ArgoUML, j’ai pas trouvé mieux en gratuit pour l’instant) et générer mon fichier model.edmx ainsi que le script de base de données correspondant.

L’application en ClickOnce : http://labs.ucaya.com/EF.Wizard/publish.htm

Une video de démonstration : http://silverlight.services.live.com/49123/c3ca3d75-b05f-49d2-8522-b22131f2ee8d/Generation.wmv

#    Comments [0] |

Partager des DataContracts entre WebServices avec Silverlight

Les différents webservices d’une même application ont parfois besoin de partager les mêmes structures de données. Par défaut, lors de l’ajout de ces webservices à la solution, Silverlight duplique les classes de données générées.

Imaginons un DataContract User retourné par un webservice Users.svc qui gère les utilisateurs et utilisé dans webservice Rights.svc qui gère les droits de l’application.

    [DataContract]

    public class User

    {

        [DataMember]

        public string FirstName { get; set; }

 

        [DataMember]

        public string LastName { get; set; }

 

    }

 

    [ServiceContract(Namespace = "")]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class Users

    {

        [OperationContract]

        public User GetUsers()

        {

            return new User { FirstName = "Thierry", LastName = "Bouquain" };

        }

    }

 

    [ServiceContract(Namespace = "")]

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class Rights

    {

        [OperationContract]

        public User AssignUserRights(User user)

        {

            return user;

        }

    }

solution Pour partager le datacontract User dans les classes générées, il suffit de créer la même classe User avec le même namespace dans un project silverlight et de le référencer dans l’application silverlight.
Une fois les références des webservices mise à jours, la classe User ne sera plus générée.

Pour éviter de dupliquer les datacontracts, il est possible de créer un projet silverlight qui utilise les mêmes fichiers côté client et côté serveur.
Evidement, dans ce cas, le code du DataContract ne peux référencer des objets serveurs qui n’existent pas côté silverlight.

Je vous invite à regarder le projet attaché à ce post.

 

 

 

 

 

 

 

#    Comments [0] |
# Tuesday, October 07, 2008

Captcha en Silverlight

Encore un nouveau venu dans SLExtensions. Voici un contrôle de captcha qui se branche sur le service gratuit www.recaptcha.net.

Le principe

recaptcha-api-diagram 

  1. 1 L’utilisateur télécharge l’application silverlight qui contient le contrôle de captcha.
  2. 2 Le contrôle de captcha récupère une image plus une clé de cryptage du serveur d’image de www.recaptcha.net.
  3. 3 Le contrôle de captcha renvoie au serveur web (par POST, Get, Webservice, comme vous voulez), la clé de cryptage optenue auprès de www.recaptcha.net ainsi que les mots saisis par l’utilisateur.
  4. 4 Le serveur web fait un appel au serveur www.recaptcha.net en passant les données venues de l’utilisateur (mots + clé) plus une clé privée. Le serveur reCaptcha valide ou non le captcha. Le serveur fait ensuite (ou non) son traitement.
  5. 5 Retour vers l’utilisateur pour l’informer du résultat.

Le contrôle

<UserControl x:Class="SLExtensions.Showcase.PageRecaptcha"

   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   xmlns:slec="clr-namespace:SLExtensions.Controls;assembly=SLExtensions.Controls"

   Width="400" Height="300">

    <StackPanel x:Name="LayoutRoot" Background="White">

        <slec:ReCaptcha x:Name="captcha" PublicKey="6LesLAMAAAAAACjPBtyjD80bwTowvEQrslT8bJvT" HorizontalAlignment="Center" VerticalAlignment="Center" >

            <slec:ReCaptcha.Verifier>

                <slec:ReCaptchaHttpPostVerifier Url="/VerifyCaptcha.aspx" Success="ReCaptchaHttpPostVerifier_Success" Failed="ReCaptchaHttpPostVerifier_Failed"/>

            </slec:ReCaptcha.Verifier>

        </slec:ReCaptcha>

    </StackPanel>

</UserControl>

Pour utiliser le contrôle, vous devez fournir un objet qui implémente l’interface IReCaptchaVerifier. C’est lui qui va se charger de faire l’appel au webservice vers votre serveur. Dans SLExtensions, j’ai ajouté une classe d’exemple qui fait un POST http des informations ainsi que la page aspx qui valide les informations auprès de recaptcha.

#    Comments [0] |