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 une variable "globale" en XAML


Sujet :

Silverlight

  1. #21
    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
    L'informatique c'est pas de la sorcellerie hein

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text="{Binding test99, Source={StaticResource xxx}}

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Bonsoir Harry Potter (alias Skyounet )

    Comme je disais, c'est presque bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Text="{Binding test99, Source={StaticResource xxx}}
    me retourne 333 alors qu'il devrait me retourner 777

  3. #23
    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 que tu implémentes INotifyPropertyChanged sur ta classe clsGlobal.
    Ensuite sur le set de test99 il faut que tu lances l'évènement que tu dois implémenter à cause de l'interface en passant en paramètre de PropertyChangedEventArgs le nom de ta propriété (cad test99).

  4. #24
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Ok je me rend...

    Ca dépasse le niveau de mes compétences, je crois que je vais continuer à utiliser mon textBox caché par un zIndex à -1 comme expliqué en début de post, pas très élégant mais néanmoins efficace...

    Merci en tous cas pour tous vos efforts et peut-être que dans une prochaine version il existera un moyen plus simple de passer une variable dans le XAML.

  5. #25
    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 Golzinne Voir le message
    Ok je me rend...

    Ca dépasse le niveau de mes compétences, je crois que je vais continuer à utiliser mon textBox caché par un zIndex à -1 comme expliqué en début de post, pas très élégant mais néanmoins efficace...

    Merci en tous cas pour tous vos efforts et peut-être que dans une prochaine version il existera un moyen plus simple de passer une variable dans le XAML.
    Ben non tu as terminé
    Je te mets le code C#.

    INotifyPropertyChanged est la BASE de Silverlight, si tu comprends pas ça tu peux arrêter de suite...

    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
    25
    26
     
    public class ClsGlobal : System.ComponentModel.INotifyPropertyChanged
    {
        private int test99;
     
        public int Test99
        {
            get { return test99; }
            set
            {
                test99 = 99;
                RaiseNotifyPropertyChanged("Test99");
            }
        }
     
        #region INotifyPropertyChanged Members
     
        private void RaiseNotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null) PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
     
        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
     
        #endregion
    }
    Ca sert à dire à l'interface que Test99 a été modifiée et qu'il faut qu'il mette à jour la valeur que tu vois.

  6. #26
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Heureusement que tu m'as remotivé car effectivement tu y étais presque, si près du but ça aurait été bête... Voici le code VB pour ceux que ça intéresse.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Class clsGlobal
        Implements System.ComponentModel.INotifyPropertyChanged
    Public Property test99() As Integer
            Get
                Return _test99
            End Get
            Set(ByVal value As Integer)
                _test99 = value
                RaiseEvent PropertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs("test99"))
            End Set
        End Property
     Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
    End Class
    Le code dans App.xaml.vb et maPage.xaml.vb reste inchangé.

    Merci beaucoup pour votre patience à tous et pour ta persévérence Skyounet.

  7. #27
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Voldemor a encore frapé !

    dans maPage.xaml le 777 s'affiche bien dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                        <TextBox x:Name="test"  Text="{Binding test99, Source={StaticResource xxx}}"  />
    par contre quand je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    <riadata:ControlParameter ParameterName="parRevId"  Value="{Binding test99, Source={StaticResource xxx}}"/>
    j'ai l'erreur suivante:
    at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
    at myAppli.Contact.InitializeComponent()
    at myAppli.Contact..ctor()
    alors que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <riadata:ControlParameter ParameterName="parRevId"  Value="777"/>
    ne provoque pas d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. passer une variable globale
    Par sub-0 dans le forum Langage
    Réponses: 5
    Dernier message: 04/05/2010, 17h24
  2. Réponses: 1
    Dernier message: 17/07/2008, 16h41
  3. [Struts] Passer une variable dans l'url
    Par pilz dans le forum Struts 1
    Réponses: 2
    Dernier message: 30/03/2005, 15h23

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