IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

Binding slider Canvas


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Par défaut Binding slider Canvas
    Bonjour,

    J'aimerai savoir comment Binder un slider à un canvas qui se trouve dans un autre fichier xaml ?

    J'ai un premier fichier xaml MainWindow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Canvas Width="215" Height="215" Margin="8,8,8,9" Opacity="{Binding ElementName=setTransparancy,Path=Value}">
     
            <Path Stroke="DarkGray" StrokeThickness="0.5" Height="125" Stretch="Fill" Width="215" >
     
                <Path.Fill>
                    <LinearGradientBrush StartPoint="0.2,0" EndPoint="0.8,1">
                        <GradientStop Color="White" Offset="0"></GradientStop>
                        <GradientStop Color="LightGray" Offset="0.45"></GradientStop>
                        <GradientStop Color="Gray" Offset="1"></GradientStop>
                    </LinearGradientBrush>
                </Path.Fill>
                ...
    Et un deuxième fichier xaml Options qui contient mon slider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Slider Value="1" Height="23" HorizontalAlignment="Left" Margin="189,211,0,0" x:Name="setTransparancy" VerticalAlignment="Top" Width="143" ValueChanged="setTransparancy_ValueChanged" Minimum="0" Maximum="1" SmallChange="0.1" LargeChange="0.5" TickPlacement="BottomRight" TickFrequency="1"/>
    Mon but est de binder le slider avec le canvas (ou son le path, je ne suis pas sûr...) pour définir sa transparence.

    Merci pour votre aide.

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Par défaut
    Je n'ai toujours pas réussi à résoudre mon problème.

    J'ai essayé avec des Binding RelativeSource, XPath, n'importe quoi, j'ai pas réussi.

    J'ai testé de mettre mon slider dans la même fenêtre que mon path (parce que c'est sur lui que je le veux en fait), et ça fonctionne ! Donc ça veut bien dire que je ne suis pas loin mais je n'arrive pas à effectuer la même chose quand mes deux composants sont dans deux fenêtres (donc deux fichiers xaml) distinctes.

    Il n'y a personne qui peut m'aider ? Je ne suis pourtant pas le premier à avoir essayé je pense !

    De plus, je suis en train de penser, vu que ma fenêtre d'options n'est pas affichée tout le temps (normal...), à chaque nouvel affichage, je refais un new et donc mon slider n'aura pas la valeur actuelle de la transparence de mon path !?

    (d'ailleurs concernant mon new sur la fenêtre d'options, ça me dérange car si je ré-appuie sur le bouton, ça m'affiche deux fenêtre d'options différentes... J'ai essayé avec un singleton mais il n'y a pas la possibilité de passer des paramètres.)

    S'il vous plaît, un peu d'aide, une piste !

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 77
    Par défaut
    C'est pour ce genre de cas, entre mille autres, qu'il est intéréssant (si ce n'est nécéssaire) d'utiliser le pattern MVVM.

    Pour ton cas précis, tu aurais deux View (contenus dans deux fichiers Xaml physique) : une qui contient ton Canvas et l'autre qui contient ton Slider et un seul ViewModel.

    La ViewModel contiendrait une propriété hébergeant la valeur de ton slider et cette ViewModel sera utilisé par les deux Views.

    Ensuite, les composants dans tes View se binderont sur la propriété de la ViewModel et le tour est joué !

    Si ce n'est pas clair, je te conseille vivement d'avoir des lectures sur ce pattern.

    Bon courage

  4. #4
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Salut,

    sinon, tu passes par ne classe static exposant la valeur de la propriété concernée. Tu définis tes bindings en XAML en mode "TwoWay" (ou "OneWayToSource" pour le Canvas, si j'ai bien compris ce que tu voulais faire).
    Tu ne peux pas binder ton slider à ton canvas parce qu'ils sont dans deux namescopes différents.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Par défaut
    Bonjour,

    Merci à vous deux pour vos réponses !
    Je n'ai pas reçu de notifications par mail...

    @Whisperer: Oui j'ai entendu parler de ce pattern, mais ne l'ai jamais utilisé. Je comptais me pencher dessus quand j'aurai un peu plus de temps pour voir de quoi il s'agit exactement.

    @MetalGeek: J'avais bien vu des exemples avec les différents modes mais je n'ai jamais réussi à les mettre en place, cependant tu m'as apporté un élément en plus, je re-testerai quand j'aurai un peu plus de temps encore une fois, je suis actuellement sur des projets plus important, ce problème est pour un projet perso donc...

    Merci en tout cas, je vous tiendrai au courant.

Discussions similaires

  1. Différence du bind dans un canvas ?
    Par PauseKawa dans le forum Tcl/Tk
    Réponses: 3
    Dernier message: 21/08/2012, 08h28
  2. [MVVM] Binding d'élèments dans un canvas
    Par Oberown dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 17/06/2012, 18h19
  3. Binding et dessin dans un Canvas
    Par MiniCesc dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 20/01/2011, 12h22
  4. [Slider/MediaPlayer] slider binding with reverse
    Par blackbird67 dans le forum JavaFX
    Réponses: 0
    Dernier message: 11/06/2010, 12h02
  5. bind textinput et slider
    Par pgtremb dans le forum Flex
    Réponses: 2
    Dernier message: 17/11/2008, 15h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo