none
Charger dynamiquement des graphiques XAML RRS feed

  • Question

  • Bonjour,

    Je dispose de plusieurs éléments graphiques, au format XAML (vectoriel).
    Dans une boucle conditionnelle je voudrais charger tel ou tel graphique, selon la condition qui est rencontrée:

    en clair si l'utilisateur à choisi "A", le graphique "graphA" est montré, si c'est "B", le graphique "garphB" est montré...etc

    Ma question est donc:

    Comment puis je avoir tous ces éléments, dans une sorte de bibliotheque, ou en ressource, comme pour un élément bitmap ou son (les avoir donc en resource..et eviter de devoir les "loader"?
    Et ensuite, comment puis-je charger une illustration dans 1 Canvas, et faire qu'elle soit remplacée par une autre illustration, selon les choix de l'utilisateur?

    D'avance un grand merci!!

    vendredi 24 février 2012 20:31

Réponses

  • Bonjour,

    J'ai déjà eu cette problématique dans un gros projet en MVVM.

    Je m'en suis sorti en créant des fichiers XAML différents contenant chacun un de mes "éléments graphiques" (sans conteneur, directement l’élément dans le fichier).

    Ensuite coté code, j'ai récupéré le contenu de ces mêmes fichiers et je les ai loadés via XamlLoader.

                            StreamResourceInfo sri = Application.GetResourceStream(new Uri(templatePath, UriKind.Relative));
    
                            using (StreamReader sr = new StreamReader(sri.Stream))
                            {
                                template = XamlReader.Load(sr.ReadToEnd()) as ControlTemplate;
                            }
    

    Dans mon cas c’était pour récupérer des Templates a la volée mais ça fonctionne pour n'importe quel élément... Du coup tu peux récupérer tes éléments et les ajouter a ton Canvas via code.

    Un point a surveiller, si tu utilises des namespaces dans tes éléments, il ne faut pas oublier de les rajouter dans le fichier XAML dans ton contrôle directement...


    Geoffrey { NeuroCypher } DANIEL

    • Marqué comme réponse jmdeb vendredi 2 mars 2012 13:10
    vendredi 2 mars 2012 10:58

Toutes les réponses

  • Bonjour,

    Pouvez-vous nous expliquer ce que vous appelez par "graphique" ? Est-ce du XAML ?

    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

    dimanche 26 février 2012 22:07
    Modérateur
  • Je dispose de plusieurs éléments graphiques, au format XAML (vectoriel).
    Oui, en effet...c'est du XAML :)
    lundi 27 février 2012 00:51
  • Bonjour,

    J'ai déjà eu cette problématique dans un gros projet en MVVM.

    Je m'en suis sorti en créant des fichiers XAML différents contenant chacun un de mes "éléments graphiques" (sans conteneur, directement l’élément dans le fichier).

    Ensuite coté code, j'ai récupéré le contenu de ces mêmes fichiers et je les ai loadés via XamlLoader.

                            StreamResourceInfo sri = Application.GetResourceStream(new Uri(templatePath, UriKind.Relative));
    
                            using (StreamReader sr = new StreamReader(sri.Stream))
                            {
                                template = XamlReader.Load(sr.ReadToEnd()) as ControlTemplate;
                            }
    

    Dans mon cas c’était pour récupérer des Templates a la volée mais ça fonctionne pour n'importe quel élément... Du coup tu peux récupérer tes éléments et les ajouter a ton Canvas via code.

    Un point a surveiller, si tu utilises des namespaces dans tes éléments, il ne faut pas oublier de les rajouter dans le fichier XAML dans ton contrôle directement...


    Geoffrey { NeuroCypher } DANIEL

    • Marqué comme réponse jmdeb vendredi 2 mars 2012 13:10
    vendredi 2 mars 2012 10:58
  • Un grand merci Geoffrey...j'essaie cela directement

    Merci!!

    vendredi 2 mars 2012 13:10