none
Charger dynamiquement des graphiques XAML

    Soru

  • 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!!

    24 Şubat 2012 Cuma 20:31

Yanıtlar

  • 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

    • Yanıt Olarak İşaretleyen jmdeb 02 Mart 2012 Cuma 13:10
    02 Mart 2012 Cuma 10:58

Tüm Yanıtlar

  • 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

    26 Şubat 2012 Pazar 22:07
  • Je dispose de plusieurs éléments graphiques, au format XAML (vectoriel).
    Oui, en effet...c'est du XAML :)
    27 Şubat 2012 Pazartesi 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

    • Yanıt Olarak İşaretleyen jmdeb 02 Mart 2012 Cuma 13:10
    02 Mart 2012 Cuma 10:58
  • Un grand merci Geoffrey...j'essaie cela directement

    Merci!!

    02 Mart 2012 Cuma 13:10