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

Framework .NET Discussion :

[WPF] Initialiser un Xpath à une variable?


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut [WPF] Initialiser un Xpath à une variable?
    Bonjour,
    J'ai plusieurs pages dans mon application. Elles sont construites sur le meme modele (vu qu'on peut pas avoir une classe de base...). A chaque fois je binde le datacontext de la page à une source de données xml en spécifiant un xpath qui va chercher l'id de la page. Dans le code suivant par exemple, le XPath va chercher l'id 'Page2'.

    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
     
    <Page    (....)
    	x:Class="MyApply.Page2">
     
        <Page.Resources>
            <XmlDataProvider 
                x:Key="MyXmlDataSource" 
                d:IsDataSource="True" 
                Source="MyXmlFile.xml"/>
        </Page.Resources>
     
        <Page.DataContext>
            <Binding 
                Mode="Default" 
                Source="{StaticResource MyXmlDataSource}" 
                XPath="/Pages/Page[@id='Page2']" />
        </Page.DataContext>
        (...)
    </Page>
    Ce que j'aimerais pouvoir faire, c'est réutiliser cette page en spécifiant un autre id, en d'autres termes est il possible de customiser mon XPath en ajoutant une méthode par exemple à ma classe Page.

    Merci!

  2. #2
    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
    Binding possède une propriété Parameter: à toi de voir si tu ne peux pas jouer la dessus

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 13
    Par défaut
    Merci de m'avoir répondu.
    Seulement je n'ai pas l'impression en regardant msdn que binding ait une property Parameter.
    J'ai pu faire ce que je voulais en écrivant l'équivalant dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      public MyPage(string pageId)
      {
       this.InitializeComponent();
     
       string path = String.Format("/Pages/Page[@id='{0}']", pageId);
     
       XmlDataProvider dp = new XmlDataProvider();
       dp.Source = new Uri("MyXmlFile.xml", UriKind.Relative);
       dp.XPath = path;
     
       DataContext = dp;
      }
    J'ai dû enlever le binding, car ca ne marchait pas.
    Je ne suis pas certain d'avoir la meilleure conception qui soit, mais ca fait ce que je veux, pour l'instant...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/04/2006, 13h12
  2. Comment savoir si une variable est initialisée ?
    Par nabix dans le forum Général Python
    Réponses: 8
    Dernier message: 10/03/2005, 15h12
  3. [VB6]Initialiser une variable Static dans un évenement
    Par loverdose dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 20/01/2005, 14h57
  4. Réponses: 9
    Dernier message: 29/06/2004, 08h40

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