Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Vko

WPF, Interfaces Utilisateurs et .NET

[WPF] Thumb … la suite !

Comme promis, voici un exemple plus concret de l’utilité du contrôle Thumb.

Voici comment en 20 minutes et à l’aide de 2 Thumbs, on peut déplacer et redimensionner des contrôles très simplement.

Edit : suite à une remarque judicieuse, je vous met même un petit GIF animé ! ThumbPart2

Le code source est extrêmement simple :

private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
    this.SetValue (Canvas.LeftProperty, (double)this.GetValue(Canvas.LeftProperty) + e.HorizontalChange);
    this.SetValue(Canvas.TopProperty, (double)this.GetValue(Canvas.TopProperty) + e.VerticalChange);
}
 
private void resizeThumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
    double width = this.ActualWidth + e.HorizontalChange;
    double height = this.ActualHeight + e.VerticalChange;
 
    if (width <= 0)
        width = 1;
 
    if (height <= 0)
        height = 1;
 
    this.Width = width;
    this.Height = height;
}

Hop, je vous laisse télécharger le code source (oui … j’ai passé les 20 minutes sous Blend)

Enjoy !

Télécharger le code source

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 16 octobre 2009 07:39 par Vko
Classé sous :

Commentaires

Loïc Berthollet a dit :

Sympa, ce Thumb !

Connaissait pas. Merci.

Bien aussi la petite app de démo. Elle pourrait aussi servir d'exemple à article sur l'utilisation des ressources, templates et styles.

Et dans ce cadre, histoire que l'utilisateur ne perde pas irrémédiablement l'accès aux composants déplacés hors de la fenêtre (si si, il va y avoir qui vont le faire... la preuve: je l'ai fait!), on peut transformer Thumb_DragDelta comme cela :

     private void Thumb_DragDelta( object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e )

     {

        const double minLeft = 10;

        const double minTop = 10;

        var left = (double) GetValue(Canvas.LeftProperty) + e.HorizontalChange;

        var top = (double) GetValue(Canvas.TopProperty) + e.VerticalChange;

        if (left + Width &lt;= minLeft)

           left = minLeft - Width;

        if (top + Height &lt;= minTop)

           top = minTop - Height;

        SetValue(Canvas.LeftProperty, left);

        SetValue(Canvas.TopProperty, top);

     }

Certes, cela n'apporte rien à la compréhension, mais ca ne mange pas de pain...

# octobre 19, 2009 10:14
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le il y a 8 heures et 20 minutes

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

- Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53

- Lancement en Preview de Cyclone lors des TechDays 2010! par Blog de Frédéric Queudret le 03-17-2010, 16:30

- [WP7] Je ne veux pas d’un nouvel iPhone par Le blog de FremyCompany le 03-17-2010, 13:11

- [WF4] Pourquoi utiliser le ContentPresenter dans l’ActivityDesigner? par Blog de Jérémy Jeanson le 03-17-2010, 07:54

- [Mix 2010] – Telechargez Internet Explorer 9 en Preview ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:58

- [MIX 2010] – Keynote Day 2 online : Windows Internet Explorer 9, jQuery, OData et Dallas CTP2 ! par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 00:18

- [Mix 2010] – Retour d’expérience développement Seesmic sur Windows Phone 7 par RedoBlog - The .NET Gentleman !!! le 03-16-2010, 23:44