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 :

Binder le selectedItem d'une ComboBox sur une propriété static


Sujet :

Silverlight

  1. #1
    Membre habitué Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Points : 133
    Points
    133
    Par défaut Binder le selectedItem d'une ComboBox sur une propriété static
    Bonjour à tous,

    Je voudrais Binder une propriété static d'une classe non static sur le selectedItem d'une comboBox mais je n'y arrive pas. J'ai essayé de la manière suivante :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public partial class MainPage : UserControl
    {
       //Ma propriété à binder
       public static CUSTOMER CustomerSelected;
    }

    ma classe AutrePage.xaml
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <navigation:Page.Resources>
        <Myxmlns:MainPage x:Key="MainPage"></Myxmlns:MainPage>
    </navigation:Page.Resources>
    <Grid>
        <ComboBox  Name="Cb_AvailableCustomers" SelectedItem="{Binding Source={StaticResource MainPage}, Path=CustomerSelected, Mode=TwoWay}"/>
    </Grid>

    Mais ça ne marche pas, lorsque je sélectionne un Item cela ne met pas à jour ma propriété static

  2. #2
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Peut être que la vrai question c'est : pourquoi un propriété static ?

    Il vaudrait mieux créer une classe héritant de INotifyPropertyChanged contenant ta propriétés CustomerSelected.
    Puis ajouter une propriété statique de type ta classe dans l'App.cs

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static TaClasse MaClasse
    {
      get
      {
          if( _MaClass == null )
          {
             _MaClass = new TaClass();
          }
     
          return _MaClass;
      }
    }
    private static TaClasse _MaClasse = null;

    Puis du coté de ton control, il suffit dans ton constructeur de remplir le datacontext avec la propriété statique.


    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    this.LayoutRoot.DataContext = App.MaClasse;

    et dans ton XAML :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ComboBox  Name="Cb_AvailableCustomers" SelectedItem="{Binding Path=CustomerSelected, Mode=TwoWay}"/>
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  3. #3
    Membre habitué Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Points : 133
    Points
    133
    Par défaut
    En fait la propriété static de ma classe MainPage me permet d'avoir mon CustomerSelected de disponible facilement sur toutes les pages de mon site. Le MainPage, contenant la ContentFrame qui permet la navigation vers toutes mes vues je trouve ça plus simple de la déclarer en statique afin de pouvoir y avoir accès dans toutes mes vues mais peut être que cela n'est pas vraiment une bonne pratique ? Et si non je serai intéressé de savoir pourquoi

    Toi ce que tu proposes de faire c'est un espèce de singleton nan ?

  4. #4
    Membre émérite
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Points : 2 682
    Points
    2 682
    Par défaut
    Oui c'est ça. c'est la méthode traditionnellement utilsée en MVVM pour rendre les données disponibles entre les différents controles.
    .
    Pas de question technique en MP, merci.
    .
    Un emulator Gameboy Color pour Windows Phone ?
    c'est moi qui l'ai fait

  5. #5
    Membre habitué Avatar de Mozofeuk
    Inscrit en
    Novembre 2007
    Messages
    326
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 326
    Points : 133
    Points
    133
    Par défaut
    Ok ba je ferais comme ça maintenant

    Merci, cdt MoZo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Binder une comboBox sur la propriété d'une liste d'objet
    Par zouuc dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 04/11/2010, 16h33
  3. Binder une ComboBox sur une requête SQL
    Par SKone dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/11/2009, 02h08
  4. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  5. [VBA-E] Vider une combobox sur une feuille
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/03/2007, 17h19

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