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

Silverlight Discussion :

Passer des valeurs aux éléments d'un contrôle


Sujet :

Silverlight

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 48
    Points
    48
    Par défaut Passer des valeurs aux éléments d'un contrôle
    Bonjour,

    J'ai un contrôle qui se nomme 'Menu' qui contient un Border :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <UserControl x:Class="AppliSilverlight.Menu"
        xmlns[...]>
        <Grid x:Name="LayoutRoot" VerticalAlignment="Top" >
        	<Border x:Name="BrdMenu" BorderThickness="1,1,1,1" CornerRadius="10,10,10,10">
                <Canvas/>
            </Border>
        </Grid>
    </UserControl>
    Je le déclare dans ma page 'PageAccueil' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <local:Menu x:Name="MenuTest" Width="200" />
    Voici ce que j'aimerai donc au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <local:Menu x:Name="MenuTest" Width="200" Background="#FFACD8FF" BorderBrush="#FF62A5E1" />
    Mais que ce ne soit pas le contrôle en lui même qui prenne ces couleurs, mais le border inclus dans le 'Menu'

    Ma question est : Comment faire pour assigner des valeurs aux propriétés du border (du contrôle 'Menu'), lors de la déclaration dans un page. Faut-il passer par du binding, par du code? Je m'y prend mal?

    Merci de m'éclairer

  2. #2
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    J'ai réussi à faire ce que je voulai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public partial class Menu : UserControl
        {
            public Menu()
            {
                InitializeComponent();
     
                this.Loaded += new RoutedEventHandler(Menu_Loaded);
            }
     
            void Menu_Loaded(object sender, RoutedEventArgs e)
            {
                if (this.Background != null)
                {
                    BrdMenu.Background = this.Background;
                    this.Background = null;
                }
     
                if (this.BorderBrush != null)
                {
                    BrdMenu.BorderBrush = this.BorderBrush;
                    this.BorderBrush = null;
                }
            }
        }
    mais je trouve que ça fait un peu rustine, si quelqu'un avait une meilleure idée? Surtout que sous Blend 2.5, le color picker n'affiche pas la couleur du coup...

  3. #3
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il faut créer une DependencyProperty.

    Exemple :
    Dans le code behind de ton UC.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            public Color MyBorderColor
            {
                get { return (Color)GetValue(MyBorderColorProperty); }
                set
                {
                    BrdMenu.BorderBrush = value;
                    SetValue(MyBorderColorProperty, value);
                }
            }
     
            // Using a DependencyProperty as the backing store for MyBorderColor.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty MyBorderColorProperty =
                DependencyProperty.Register("MyBorderColor", typeof(Color), typeof(Menu), null);

    Snippet : propd

    Et ensuite tu l'utilises comme une propriété de ton UC dans ton XAML.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Il faut créer une DependencyProperty.

    Exemple :
    Dans le code behind de ton UC.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            public Color MyBorderColor
            {
                get { return (Color)GetValue(MyBorderColorProperty); }
                set
                {
                    BrdMenu.BorderBrush = value;
                    SetValue(MyBorderColorProperty, value);
                }
            }
     
            // Using a DependencyProperty as the backing store for MyBorderColor.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty MyBorderColorProperty =
                DependencyProperty.Register("MyBorderColor", typeof(Color), typeof(Menu), null);

    Snippet : propd

    Et ensuite tu l'utilises comme une propriété de ton UC dans ton XAML.
    Utiliser une DependencyProperty n'est pas une obligation dans son cas: cela n'a en effet du sens que s'il souhaite animer/transformer/binder/etc... la propriété en question

  5. #5
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Utiliser une DependencyProperty n'est pas une obligation dans son cas: cela n'a en effet du sens que s'il souhaite animer/transformer/binder/etc... la propriété en question
    Ca permet de styler c'est pas suffisant ?

    Il existe une autre solution, ça m'intéresse ?
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Ca permet de styler c'est pas suffisant ?
    Tu veux dire quoi par là: permettrent l'utilisation des styles ? Les DP permettent tout ce que j'ai mis dans mon post d'avant (et même un peu plus). De plus, je ne suis plus sur (a vérifier) qu'une propriété doit être une DP pour qu'on puisse l'utiliser dans un style

    Il existe une autre solution, ça m'intéresse ?
    Bah, ca technique fonctionne

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Tu veux dire quoi par là:
    La DP que j'ai rajouté permets de styler son UC, ce n'est pas suffisant pour justement utiliser une DP plutôt qie sa technique malgré le fait qu'elle ne serve pas à du Binding, Animation...
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    Je suis en stage (3 mois) et mon sujet est Silverlight (veille techno), je dois donc, entre autre, présenter la coopération entre les différents acteurs d'un projet (designer-intégrateur-programmeur).

    Je fais donc en ce moment un travail d'intégration d'un composant (sous VS et Blend), qui sera ensuite manipulé par le designer de la boite (sous Blend).

    - Ma solution ne permet pas de voir/retrouver la couleur dans le color picker de Blend, mais permet d'en sélectionner une.
    - La solution de Skyounet (Merci au passage ) ajoute une propriété, ce qui fait que le composant n'a pas un comportement "normal", le designer doit donc être averti.

    Je vais donc continuer à plancher sur la question...

    Merci beaucoup pour votre aide, ça m'est très utile

  9. #9
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par alex_noox Voir le message
    Je suis en stage (3 mois) et mon sujet est Silverlight (veille techno), je dois donc, entre autre, présenter la coopération entre les différents acteurs d'un projet (designer-intégrateur-programmeur).
    Tin la chance.

    ce qui fait que le composant n'a pas un comportement "normal", le designer doit donc être averti.
    Je comprends pas bien le problème. La DP apparaitra dans l'onglet Propriété sous Blend il me semble (Dans Miscellaneous je crois bien).
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  10. #10
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Je comprends pas bien le problème. La DP apparaitra dans l'onglet Propriété sous Blend il me semble (Dans Miscellaneous je crois bien).
    En fait quand le designer veut changer un Background ou un BorderBrush, il se pose pas trop de questions, il fait comme on lui a appris : il utilise le panel "Brushes" dans Blend.

    Sur des gros projets il faut éviter au maximum, d'avoir des composants avec des spécificités autre que métier. C'est pour ça que je chipote un peu

  11. #11
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Moi, je vois ce que tu veux dire mais je ne vois pas de solutions pour ce problème: si tu rajoutes une DP, il faut dire à ton designer quelle existe et à quoi elle sert

Discussions similaires

  1. passer des valeurs d'une page à l'autre
    Par casaoui dans le forum ASP.NET
    Réponses: 8
    Dernier message: 13/06/2007, 17h55
  2. passer des valeur d'un field à un tableau js
    Par gforce dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/03/2007, 10h21
  3. Comment passer des valeurs en arguments
    Par remi77 dans le forum Excel
    Réponses: 6
    Dernier message: 13/03/2007, 11h54
  4. Passer des valeurs dans mon actionform sans les afficher
    Par tonito53 dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/01/2007, 11h36
  5. [String] passer des minuscules aux majuscules
    Par Lady_jade dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 10h03

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