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 :

Assigner un DataTemplate à un TreeViewItem via le code behind


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2015
    Messages : 18
    Points : 24
    Points
    24
    Par défaut Assigner un DataTemplate à un TreeViewItem via le code behind
    Bonjour, je suis en train de faire une app en WPF (oui ça existe) et j'essaie d'assigner un DataTemplate à un TreeViewItem via le code behind:
    Mon xaml :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <Window x:Class="Assembly.MainWindow"
    <!--...-->
        <Window.Resources>
            <Style x:Key="Header" TargetType="{x:Type TreeViewItem}">
                <!--...-->
            </Style>
     
            <DataTemplate x:Key="TaskStyle">
            <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="20"/>
                        <!--...-->
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="12"></RowDefinition>
                        <!--...-->
                    </Grid.RowDefinitions>
                    <!--...-->
                    <StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal">
                        <TextBlock FontSize="10" Text="Action : " FontStyle="Italic" />
                        <TextBlock FontSize="10" ToolTip="{Binding ActionDisplay}" Text="{Binding ActionDisplay}" FontStyle="Italic" />
                    </StackPanel>
                    <!--...-->
                </Grid>
            </DataTemplate>
        </Window.Resources>
     
        <StackPanel>
            <TreeView Name="UITreeView">
            </TreeView>
        </StackPanel>
    </Window>
    Mon c# : Je veux créer un treeView avec ce format :
    Header
    TaskStyle
    TaskStyle
    TaskStyle
    Header
    TaskStyle
    ...

    J'arrive bien à afficher ce treeView mais j'arrive pas à appliquer le DataTemplate "TaskStyle".
    Mon code c# :
    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
            private void SetupDisplaying()
            {
                UITreeView.Items.Clear();
                var items = UITreeView.Items;
                
                //Groupes est une list de mes Headers
                foreach (string groupe in Groupes)
                {
                    var HeaderItem = new TreeViewItem() { Header = groupe, Style = (Style)FindResource("Header") };
                    items.Add(HeaderItem);
                    List <TreeViewItem> subsitem = Alist.Where(r => r.Name.Contains(groupe)).Select.(g => new TreeViewItem(){Header=g.Name,DataContext = g,ItemTemplate= (DataTemplate)FindResource("TaskStyle") }).ToList(); //Cree un TreeViewItem si Name contient le nom du groupe
                    foreach (TreeViewItem n in subsitem)
                        (HeaderItem as TreeViewItem).Items.Add(n);
                }
            }
    Effet de ce code : Affichage du treeView sans aucun formatage "DataTemplate"
    Sans écrire dans la prop "Header" : Affichage de vide à la place des items (normal)
    Le DataContexte du TreeViewItem (n dans le foreach) contient bien l'object que je veux.
    Piste : Le ItemTemplate du TreeViewItem (n dans le foreach) est bien trouvé (sinon il revois un erreur) par contre ce ItemTemplate m'a l'air vide.
    Des idées du problème ?

  2. #2
    Membre régulier Avatar de _champy_
    Homme Profil pro
    Chef de projet progiciel patrimoine route/tram/aeroport
    Inscrit en
    Novembre 2017
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet progiciel patrimoine route/tram/aeroport
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2017
    Messages : 26
    Points : 75
    Points
    75
    Par défaut
    Dans le code-behind ... mauvaise idée.

    Tu peut t'en sortir avec un ItemTemplateSelector qui choisiras le bon DataTemplate en fonction d'une donnée du DataContext.

    Un exemple ici :

    http://dotnetpattern.com/wpf-listvie...mplateselector

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/10/2014, 17h00
  2. [Windows Phone 8] Comment actualiser une page web via le code behind C#
    Par gfaye dans le forum Windows Phone
    Réponses: 2
    Dernier message: 28/11/2013, 23h54
  3. Construire un DataTemplate de dataform dans le code behind
    Par abbepierre94 dans le forum Silverlight
    Réponses: 9
    Dernier message: 11/08/2010, 10h28
  4. [C#] Modifier le backgroundImage via le code behind
    Par djmic dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2010, 00h58
  5. StaticItemTemplate via mon code behind
    Par Samy010976 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/07/2009, 18h05

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