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 Forms Discussion :

TreeView and TreeViewItem


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 43
    Points : 35
    Points
    35
    Par défaut TreeView and TreeViewItem
    Bonjour,
    j'ai un TreeView que je remplie d'une liste de treeViewItem à partir d'une collection ("en utilisant le binding), j'ai associé à ce TreeView un événement "Expand" pour étendre le treeviewItem et afficher ses fils, mon objectif mnt et de récupérer le dernier TreeViewItem consulté et initialisé le treeView au dernier endroit consulté.
    j'arrive à récupérer le dernier TreeviewItem consulté et ses fils mais j'arrive pas à l'étendre automatiquement. j'utilise cette méthode qui me retourne tjr null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TreeViewItem item =control.ItemContainerGenerator.ContainerFromItem(lastItem)as TreeViewItem;
     item.IsExpanded = true;
    Item est tjr null, IsExpanded ne fonctionne pas et lastItem est un String(c'est le libéllé qu'on voit sur l'écran).

    Merci de m'aider.

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    TreeView et TreeViewItem sont des contrôles WPF pas Windows Form. Mauvais Forum, non ?

    Partant de là, la logique WPF est d'exposer une propriété IsExpanded du côté de ton objet qui remplit ton TreeView.
    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
      public class MonObjetImplementant : INotifyPropertyChanged {
        ...
     
        bool _isExpanded;
        public bool IsExpanded {
          get { return this._isExpanded; }
          set {
            if (value != this._isExpanded) {
              this._isExpanded = value;
              this.OnPropertyChanged("IsExpanded");
            }
          }
        }
      }

    Cette propriété est alors bindée à la propriété IsExpanded du TreeViewItem à l'aide du style :
    Code xml : 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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
                <Style TargetType="{x:Type TreeViewItem}">
                  <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
     
                  <Setter Property="Control.Template">
                    <Setter.Value>
                      <ControlTemplate TargetType="TreeViewItem">
                        <Grid Name="container" >
                          <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto" MinWidth="19" />
                            <ColumnDefinition Width="Auto" />
                            <ColumnDefinition Width="*" />
                          </Grid.ColumnDefinitions>
                          <Grid.RowDefinitions>
                            <RowDefinition Height="Auto" />
                            <RowDefinition />
                          </Grid.RowDefinitions>
                          <ToggleButton x:Name="Expander" Grid.Column="0" 
                                        IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" 
                                        ClickMode="Press" />
                          <Border Padding="{TemplateBinding Control.Padding}" Name="Bd" Margin="0,0,0,1" 
                                  BorderThickness="1" BorderBrush="Transparent" CornerRadius="0"
                                  SnapsToDevicePixels="True" Grid.Column="1" >
                            <ContentPresenter Content="{TemplateBinding HeaderedContentControl.Header}"
                                              ContentTemplate="{TemplateBinding HeaderedContentControl.HeaderTemplate}"
                                              ContentSource="Header" Name="PART_Header"
                                              HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}"
                                              SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                          </Border>
                          <ItemsPresenter Name="ItemsHost" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" />
                        </Grid>
                        <ControlTemplate.Triggers>
                          <Trigger Property="IsExpanded" Value="false">
                            <Setter Property="Visibility" TargetName="ItemsHost" Value="Collapsed"/>
                          </Trigger>
                          <Trigger Property="HasItems" Value="false">
                            <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
                          </Trigger>
     
                          <Trigger Property="UIElement.IsEnabled" Value="False" >
                            <Setter Property="TextElement.Foreground" Value="#FF888888" />
                          </Trigger>
                        </ControlTemplate.Triggers>
                      </ControlTemplate>
                    </Setter.Value>
                  </Setter>
                </Style>

    Ensuite avec la propriété SelectedItem, il est possible de récupérer l'objet sélectionné. Et donc d'avoir la propriété IsExpanded de cet objet.

Discussions similaires

  1. TreeView / HierarchicalDataTemplate / TreeViewItem : comment faire ?
    Par seiryujay dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 23/04/2009, 09h41
  2. Réponses: 2
    Dernier message: 21/09/2007, 17h28
  3. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 10h05
  4. [Débutant(e)][VB.NET] Drag and drop entre 2 treeviews
    Par - Manuella Leray - dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/10/2005, 15h54
  5. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 14h50

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