none
Lire fichier XML présent dans dossier utilisateur/appdata/roaming RRS feed

  • Question

  • <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.Resources>
                <DataTemplate x:Key="SystemTemplate">
                    <Label Content="{Binding XPath=Name}"/>
                </DataTemplate>
            </Grid.Resources>
            <Grid.DataContext>
                <XmlDataProvider x:Name="SystemData" Source="Systems.xml" XPath="Emulators/System" />
            </Grid.DataContext>
            <ListBox Height="244" HorizontalAlignment="Left" Margin="12,12,0,0" Name="ListBox1" VerticalAlignment="Top" Width="167"
                     ItemsSource="{Binding}"
                     ItemTemplate="{StaticResource SystemTemplate}"
                     IsSynchronizedWithCurrentItem="True"
                     Visibility="Visible" SelectionMode="Single">
             </ListBox>
        </Grid>
    </Window>

    Bonjour, j'ai fait un "bind" (lien) avec un fichier XML pour peupler une Listbox.
    Cela marche bien..mais il faut dire que j'accède au fichier XML en tant que ressource, pour l'instant!

    Ce que je voudrais, c'est le lire depuis un dossier particulier: le dossier 'roaming' présent dans le dossier "Utilisateurs" (c'est là que sont écrits les fichiers utilisateurs...et donc j'aimerais que ce soit là qu'il soit sauvés également!Comment dois-je donc adapté la partie 'Source=""' de cette ligne pour faire référence au dossier utilisateur/appdata/roaming ?

    J'espère être assez clair..merci pour toute aide!!




    • Modifié jmdeb lundi 3 septembre 2012 13:09
    lundi 3 septembre 2012 13:04

Réponses

  • J'ai trouvé entretemps la réponse à mon probleme (en gros, faire passer la déclaration de la source dans le code VB, non dans celui en XAML). Pour tous ceux interessé par cette même information, voici le code:

    Pour la partie VB

    Class MainWindow 
        Dim data As XmlDataProvider = New XmlDataProvider()
        Private Sub MainWindow_Initialized(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Initialized
            data.Source = New Uri(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\nomDeMonApplication\nomDeMonXML.xml")
            data.XPath = "Emulators/System"
            Grid1.DataContext = data
        End Sub
    End Class

    Pour la partie XAML
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.Resources>
                <DataTemplate x:Key="SystemTemplate">
                    <Label Content="{Binding XPath=Name}"/>
                </DataTemplate>
            </Grid.Resources>
            <ListBox Height="244" HorizontalAlignment="Left" Margin="12,12,0,0" Name="ListBox1" VerticalAlignment="Top" Width="167"
                     ItemsSource="{Binding}"
                     ItemTemplate="{StaticResource SystemTemplate}"
                     IsSynchronizedWithCurrentItem="True"
                     Visibility="Visible" SelectionMode="Single">
             </ListBox>
        </Grid>
    </Window>

    • Modifié jmdeb mercredi 5 septembre 2012 05:20
    • Marqué comme réponse jmdeb mercredi 5 septembre 2012 05:20
    mercredi 5 septembre 2012 05:19

Toutes les réponses

  • Bonjour,

    Il faut utiliser la méthode Environment.GetFolderPath() pour obtenir ce chemin :

    http://msdn.microsoft.com/fr-fr/library/14tx8hby.aspx

    Il faut utiliser l'énumération ApplicationData dans votre cas.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    mardi 4 septembre 2012 21:54
    Modérateur
  • J'ai trouvé entretemps la réponse à mon probleme (en gros, faire passer la déclaration de la source dans le code VB, non dans celui en XAML). Pour tous ceux interessé par cette même information, voici le code:

    Pour la partie VB

    Class MainWindow 
        Dim data As XmlDataProvider = New XmlDataProvider()
        Private Sub MainWindow_Initialized(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Initialized
            data.Source = New Uri(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\nomDeMonApplication\nomDeMonXML.xml")
            data.XPath = "Emulators/System"
            Grid1.DataContext = data
        End Sub
    End Class

    Pour la partie XAML
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Grid.Resources>
                <DataTemplate x:Key="SystemTemplate">
                    <Label Content="{Binding XPath=Name}"/>
                </DataTemplate>
            </Grid.Resources>
            <ListBox Height="244" HorizontalAlignment="Left" Margin="12,12,0,0" Name="ListBox1" VerticalAlignment="Top" Width="167"
                     ItemsSource="{Binding}"
                     ItemTemplate="{StaticResource SystemTemplate}"
                     IsSynchronizedWithCurrentItem="True"
                     Visibility="Visible" SelectionMode="Single">
             </ListBox>
        </Grid>
    </Window>

    • Modifié jmdeb mercredi 5 septembre 2012 05:20
    • Marqué comme réponse jmdeb mercredi 5 septembre 2012 05:20
    mercredi 5 septembre 2012 05:19