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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    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 averti

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 46
    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 confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 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.

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    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 confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 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 ?

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    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

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