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

Windows Presentation Foundation Discussion :

[WPF]J'arrive pas à binder du xml


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut [WPF]J'arrive pas à binder du xml
    Salut à tous !

    Voilà, pour mon application, j'aimerais définir des "vues", chaque vue contenant un certain nombre de pages xaml dockées ou on veut. Pour ça, je me suis dit on va ruser: je vais tout définir dans un fichier XML, et faire de beaux bidings.

    Voilà mon fichier XML:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <Views>
     
      <View Title="title1">
      	<Page Source="RedPage.xaml" Dock="left"/>
      	<Page Source="BluePage.xaml" Dock="right"/>
      </View>
     
      <View Title="title2">
      	<Page Source="RedPage.xaml" Dock="left"/>
      	<Page Source="GreenPage.xaml" Dock="top"/>
      	<Page Source="BluePage.xaml" Dock="right"/>
      </View>
     
       ...
     
    </Views>
    Bon, et mon xaml ressemble à ça:
    là y a la ressource:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Window.Resources>
        	<XmlDataProvider x:Key="views" Source="views.xml"/>
    </Window.Resources>
    là un comboBox bidé au titre de la vue, qui me permet de choisir quelle vue afficher:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox x:Name="viewList" ItemsSource="{Binding Source={StaticResource views}, XPath=Views/View}" DisplayMemberPath="@Title" SelectedIndex="0"/>
    Et enfin, le point qui me pose souci, l'affichage des pages qu'on veut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <DockPanel DataContext="{Binding ElementName=viewList, Path=SelectedItem}">
    	<ItemsControl ItemsSource="{Binding Source=@View/Page}">
    		<DataTemplate>
    			<Frame Source="@Source" />
    		</DataTemplate>
    	</ItemsControl>
    </DockPanel>
    Et là, j'ai des vieilles exceptions, je vois pas trop comment formater le truc pour que ça marche...

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Bon, finalement, ça se lance avec le code Xaml suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <DockPanel DataContext="{Binding ElementName=viewList, Path=SelectedItem}">
    	<ItemsControl ItemsSource="{Binding Source=Page}">
    		<ItemsControl.ItemTemplate>
    			<DataTemplate>
    				<Frame Source="{Binding Path=Source}"/>
    			</DataTemplate>
    		</ItemsControl.ItemTemplate>
    	</ItemsControl>
    </DockPanel>
    Le problème, c'est que rien ne s'affiche dans ma fenêtre. Je dois avoir un problème dans la définition de mes bindings par rapport à mon fichier XML. Mais je n'arrive pas à trouver comment bien les définir...

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il faut utiliser du XPath et @, c'est pour les attribut en XPath. Essaye:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <DockPanel DataContext="{Binding ElementName=viewList, Path=SelectedItem}">
    	<ItemsControl ItemsSource="{Binding Source=//View/Page}">
    		<DataTemplate>
    			<Frame Source="@Source" />
    		</DataTemplate>
    	</ItemsControl>
    </DockPanel>

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Merci pour la réponse !
    J'ai fais ce que tu m'as dit, mais ça fait une exception quand on lance l'appli:
    Cannot locate resource '@source'.
    edit: En fait non, pas d'exception, j'avais un autre binding qui traînait (pour Docker), je l'ai viré, mais ça n'affiche toujours rien... pffff j'y comprends vraiment rien, pourtant ça devrait pas être si compliqué que ça !

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu as essayer de faire ton binding avec Blend ? Via un éditeur graphique, c'est toujours mieux qu'à la main

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Ben j'essaie j'essaie, mais souvent j'obtiens l'exceptions que j'ai mis dans mon précédent post... Et d'ailleurs, je sais pas comment lui dire que c'est le comboBox qui détermine quelle vue aller regarder :s

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Bon, après quelques temps de recherche, il apparaitrait qu'un HierarchicalDataTemplate serait plus approprié pour ce que je veux faire. Si quelqu'un à plus d'infos là dessus, je suis preneur !

  8. #8
    Membre averti
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Points : 448
    Points
    448

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    En effet, d'ailleurs j'ai déjà vu un des liens que tu m'a proposé. Le truc, c'est que tous les exemples que l'on trouve sont pour faire un tree et mettre tous le XML en arborescence.

    Moi je veux utiliser des contrôles distincts pour un même fichier XML: ComboBox et ItemsControl...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 101
    Points : 86
    Points
    86
    Par défaut
    Bon, finalement j'ai posté sur les forums MSDN, où un certain Dr. WPF a résolu mon problème d'un post ! Merci à lui: http://forums.microsoft.com/MSDN/Sho...18303&SiteID=1

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/04/2010, 17h08
  2. jboss n'arrive pas à parser web.xml
    Par tresorkoul dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 07/08/2009, 09h14
  3. Réponses: 2
    Dernier message: 17/05/2009, 11h25
  4. Rome RSS: j'arrive pas à parser une url xml
    Par amine84 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 16/12/2007, 13h27

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