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

Silverlight Discussion :

Navigation a l'interieur de TabControls et TabItems.


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut Navigation a l'interieur de TabControls et TabItems.
    Bonjour,

    Je suis de retour avec de nouvelles questions. Cette fois-ci c'est a propos des TabControl et TabItem. Je vais essayer d'exposer mon problème clairement et simplement:

    Je déclare un TabControl dans mon XAML. Je créer dynamiquement des TabItem dans celui-ci(en code-behind C#), en parcourant mon Dictionary<Tkey, Tvalue> et j'ajoute autant de TabItems que j'ai de Keys. Jusqu'à la pas de problèmes tout se passe et s'affiche correctement. Ensuite je déclare et créer des Grid que j'insère dans mon TabItem. Par la suite je souhaite mettre dans ma Grid.Column(0) un Canvas pour y placer différents objets que je ne détaillerais pas ici.

    Voici mon code:
    Code c# : 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
     
    public void Set_rooms_interface()
            {
                foreach (KeyValuePair<string, Rooms> kvp in rooms_list)
                {
                    TabItem tab_item = new TabItem();
                    Grid g = new Grid();
                    Canvas c = new Canvas();
     
                    tab_item.Header = kvp.Value.Room_name;
     
                    g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(400) });
                    g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(250) });
     
                    tab_item.Content = g;
                    Room_tab.Items.Add(tab_item);
                }
            }

    Et voici la classe que j'utilise pour mon Dictionary<TKey, TValue>:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        Dictionary<string ,Rooms> rooms_list = new Dictionary<string, Rooms>();
     
        public class Rooms
        {
            public string Room_guid;
            public string Room_name;
            public string Primary_user_guid;
            public string Room_version;
        }

    Mes TabItems représentent des sortent de chambres indépendantes dans lesquelles je peux insérer/retirer des objets. Le problème c'est que je ne sais pas comment faire pour accéder a la Grid et Canvas de telle ou telle chambres plus tard dans mon programme. Je souhaiterais pourvoir mettre une marque(Name, Tag ou autre) qui me permette, une fois le nom du TabItem saisit, de naviguer a l'intérieur pour récupérer mes différents objets et les modifier. Un peu comme on navigue a travers des objets.
    J'ai pas mal chercher et j'avoue n'avoir trouver personne dans le même cas de figure que moi. Soit ce que j'essaye de faire n'est pas possible soit je commence pas le mauvais cote, dans les deux cas je suis complètement perdu.

    J'espère ne pas avoir été trop confus dans mes explications.

    Cordialement, Ephismen.

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Pourquoi tu n'utilises pas le ItemsSource du TabControl ?

    Le code que tu utilises n'est pas dans la philosophie Silverlight/WPF mais plutôt Winforms.

    http://forums.silverlight.net/forums/p/18256/61363.aspx

    Je préfère cette solution mais je ne sais pas si elle est valable avec le TabControl du SDK
    http://www.telerik.com/community/for...a-binding.aspx

    Si tu tiens vraiment à faire comme ça alors tu peux utiliser le DataContext tu TabItem.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tab_item.DataContext = kvp.Value;
    [...]
    // pour récupérer le TabItem
    tabControl.Items.FirstOrDefault(i => ((TabItem))i.DataContext == maRoom);

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut
    J'avais penser au DataBinding sur un TabControl et j'avais même parcouru les deux liens que tu m'as présenter, mais j'ai vite abandonner l'idée car je trouvais qu'il y avait trop de restrictions. Je vais essayer de repenser mon approche par rapport a Silverlight et WPF comme tu l'as préciser, car je sens que je me complique la vie en essayant d'adapter des choses qui ne devraient pas l'être. Merci pour tes réponses, je reviendrais poster des que j'aurais trouver une solution stable.

    Cordialement, Ephismen.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 43
    Par défaut
    J'ai plus ou moins réussi ce que je voulais faire, et je pense d'une manière propre. Voici le code modifier pour ceux que cela intéresse:

    Code c# : 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
    20
    21
    22
    23
     
            public void Set_rooms_interface()
            {
                foreach (KeyValuePair<string, Rooms> kvp in rooms_list)
                {
                    Grid g = new Grid();
     
                    g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(400) });
                    g.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(250) });
                    g.ShowGridLines = true;
                    rooms_list[kvp.Key].Header = kvp.Value.Room_name;
                    rooms_list[kvp.Key].Content = g;
     
                    Room_tab.Items.Add(kvp.Value);
                }
                Room_tab.SelectionChanged += new SelectionChangedEventHandler(Room_tab_SelectionChanged);
     
            }
     
            void Room_tab_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                Rooms show_room = (Rooms)Room_tab.SelectedItem;
            }

    Et voici ma class Room ou j'hérite de TabItem:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public class Rooms : TabItem
        {
            public string Room_guid;
            public string Room_name;
            public string Primary_user_guid;
            public string Room_version;
        }

    Si quelqu'un a des suggestions qui pourraient améliorer mon code, il est le bienvenu!

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

Discussions similaires

  1. [TabItem/TabControl]Détruire un élément
    Par Tod_sd dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 17/08/2009, 17h43
  2. TabControl, tous les tabitems de la meme dimension, c'est possible ?
    Par Miguelito Loveless dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 06/07/2009, 16h00
  3. [TabControl] Orientation des TabItems
    Par Nadd dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 04/07/2009, 23h37
  4. [TabControl] Comment récupérer le nom du TabItem sélectionné ?
    Par modafine dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 05/09/2008, 13h23
  5. [WPF]TabControl dans un TabItem
    Par guitoux1 dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 15/06/2007, 19h22

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