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 :

Treeview, déselectionner le SelectedItem?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut Treeview, déselectionner le SelectedItem?
    Bonjour,

    J'ai un Treeview sur lequel je suis en train d'implementer la multiselection.
    Hors je voudrais pouvoir déselectionner des elements de mon treeview.
    Comment faire pour remettre à null le SelectedItem qui ne possède qu'un getter svp?

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    tu met propriété select de ton selecteditems a false

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 284
    Points : 79
    Points
    79
    Par défaut
    Je ne peux pas car l'itemSource est bindé sur une collection d'ISelectItem.
    Et je ne peux pas les caster en TreeViewItem, il plante.
    Du coup, impossible d'utiliser l'attribut IsSelected.

    Solution de contournement pour l'instant :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <TreeView.Resources>
    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
    </TreeView.Resources>

    Comme j'ai le multiselection, je change la couleur moi même, donc je n'ai pas besoin de celle par défaut.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Euh... je n'en suis pas sûr du tout car je n'ai jamais utilisé de TreeView mais, est-ce que SelectedItem = null marcherait ?

  5. #5
    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,

    Dans un code que j'avais pu implémenter, j'utilisais une CheckBox non visible dans le ControlTemplate du TreeViewItem. La checkBox est bindé à une propriété IsSelected du ViewModel (reste à savoir si tu fais du MVVM ). Un Trigger se base sur cette CheckBox pour l'affichage de la sélection.

    Ça donnait quelque chose comme ça :
    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
                    <ControlTemplate TargetType="{x:Type TreeViewItem}">
                      <StackPanel>
                        <Border Name="Bd"
                                Background="{TemplateBinding Background}"
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}"
                                Padding="{TemplateBinding Padding}">
                          <StackPanel Orientation="Horizontal" >
                            <CheckBox x:Name="CheckBox" IsChecked="{Binding IsSelected}" 
                                      Width="0" IsEnabled="False" />
                            <GridViewRowPresenter x:Name="PART_Header" 
                                                  Content="{TemplateBinding Header}" 
                                                  Columns="{Binding Path=Columns, RelativeSource={RelativeSource AncestorType={x:Type tools:TreeListView}}}" />
                          </StackPanel>
                        </Border>
                        <ItemsPresenter x:Name="ItemsHost" />
                      </StackPanel>
                      <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="false">
                          <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                        </Trigger>
     
                        <Trigger Property="IsChecked" SourceName="CheckBox" Value="True" >
                          <Setter Property="FontWeight" Value="Bold" />
                          <Setter Property="BorderBrush" TargetName="Bd" Value="{DynamicResource BorderSelectedTvi}" />
                          <Setter Property="Background" TargetName="Bd" Value="{DynamicResource SelectedTreeViewItem}" />
                          <Setter Property="Foreground" Value="{DynamicResource FontColor}"/>
                        </Trigger>
     
    ....

    Pour info j'utilisais cette solution pour le TreeView à multi sélection :
    http://johnstewien.wordpress.com/200...forge-project/

  6. #6
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var item = TreeViewTest.ItemContainerGenerator.ContainerFromItem(TreeViewTest.SelectedItem) as TreeViewItem;
                item.IsSelected = false;
    (TreeViewTest = le nom du treeview)
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

Discussions similaires

  1. SelectedItem d'un treeview contruit via RIA (MVVM)
    Par SIC83 dans le forum Silverlight
    Réponses: 2
    Dernier message: 14/03/2012, 11h48
  2. [C#] TreeView SelectedItem MVVM
    Par Air P-E dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 19/04/2011, 12h32
  3. TreeView et menu contextuel...
    Par agh dans le forum Composants VCL
    Réponses: 6
    Dernier message: 06/04/2009, 12h23
  4. [WPF] TreeView & SelectedItem
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 18/02/2008, 10h16
  5. Réponses: 2
    Dernier message: 20/08/2007, 06h35

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