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

C# Discussion :

[WPF] Personnaliser un TreeView et ses TreeViewItem


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut [WPF] Personnaliser un TreeView et ses TreeViewItem
    Bonjour à tous,

    je souhaiterais personnaliser un TreeView selon le niveau des TreeViewItem

    Actuellement j'ai ceci :


    avec le code qui va avec :

    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
        <UserControl.Resources>
     
            <!-- TEMPLATE TREEVIEW -->
            <HierarchicalDataTemplate x:Key="folderTemplate" DataType="{x:Type ctrl:RubriqueItem}" ItemsSource="{Binding Path=SousRubriques}">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding Path=Nom}" Foreground="DarkBlue" Margin="20,2,0,2" FontFamily="Verdana" Focusable="True" FontSize="13" HorizontalAlignment="Left" Style="{DynamicResource TBCTemplate}" />
                </StackPanel>
            </HierarchicalDataTemplate>
     
            <Style x:Key="TBCTemplate" TargetType="{x:Type TextBlock}">
                <Setter Property="Control.FontSize" Value="13" />
                <Style.Triggers>
                    <Trigger Property="Control.IsMouseOver" Value="True">
                        <Setter Property="Control.FontWeight" Value="Bold" />
                    </Trigger>
                    <Trigger Property="Control.IsEnabled" Value="False">
                        <Setter Property="Control.Foreground" Value="Gray" />
                    </Trigger>
                </Style.Triggers>
            </Style>
     
        </UserControl.Resources>
        <Grid>
            <TreeView BorderThickness="0,0,0,0" x:Name="TreeViewMenu" ItemsSource="{Binding}"  ItemTemplate="{StaticResource folderTemplate}" Background="Transparent" />
        </Grid>
    je souhaiterais que les sous-rubrique (Tarif, Régles, ...) soit de plus petite taille et qu'il n'y ai pas de marge sur la gauche

    Sinon est il possible de changer l'icone + et - (Support Terrain) qui permet de déplier une rubrique ??

  2. #2
    Membre très actif
    Avatar de UNi[FR]
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2002
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2002
    Messages : 340
    Par défaut
    Pour ce qui est du changement du + / - voici un bout de code pour l'exemple

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
            <TreeView BorderThickness="0,0,0,0" x:Name="TreeViewMenu" ItemsSource="{Binding}" ItemTemplate="{DynamicResource folderTemplate}" Background="Transparent">
                <TreeView.Resources>
                    <Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
                        <Setter Property="Focusable" Value="False"/>
                        <Setter Property="Width" Value="Auto"/>
                        <Setter Property="Height" Value="Auto"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ToggleButton}">
                                    <Border Width="20" Height="22" Background="Transparent" Padding="0,0,0,0" Margin="2,0,0,0">
                                        <Label x:Name="ExpandPath" Content=">" FontSize="12" FontFamily="Verdana" FontWeight="Bold" Foreground="DarkBlue" />
                                    </Border>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsMouseOver" Value="True">
                                        </Trigger>
                                        <Trigger Property="IsChecked" Value="True">
                                            <Setter Property="RenderTransform" TargetName="ExpandPath">
                                                <Setter.Value>
                                                    <RotateTransform Angle="90" CenterX="12" CenterY="12"/>
                                                </Setter.Value>
                                            </Setter>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
     
                    <Style TargetType="{x:Type TreeViewItem}" x:Key="tvStyle1">
                        <Setter Property="Background" Value="Transparent"/>
                        <Setter Property="HorizontalContentAlignment" Value="Left" />
                        <Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
                        <Setter Property="Padding" Value="0,0,0,0"/>
                        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
     
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type TreeViewItem}">
                                    <Grid>
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition MinWidth="19" Width="Auto"/>
                                            <ColumnDefinition Width="Auto"/>
                                            <ColumnDefinition Width="*"/>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition Height="Auto"/>
                                            <RowDefinition/>
                                        </Grid.RowDefinitions>
                                        <ToggleButton x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}" ClickMode="Press" IsChecked="{Binding Path=IsExpanded, RelativeSource={RelativeSource TemplatedParent}}"/>
                                        <Border SnapsToDevicePixels="true" x:Name="Bd" Grid.Column="1" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
                                            <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="Left" x:Name="PART_Header" ContentSource="Header"/>
                                        </Border>
                                        <ItemsPresenter x:Name="ItemsHost" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1"/>
                                    </Grid>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsExpanded" Value="false">
                                            <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                                        </Trigger>
                                        <DataTrigger Binding="{Binding Path=Key.SubKeyCount}" Value="0">
                                            <Setter Property="Visibility" TargetName="Expander" Value="Hidden"/>
                                        </DataTrigger>
                                        <Trigger Property="IsSelected" Value="true">
                                            <!--<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>-->
                                            <Setter Property="Background" Value="Transparent"/>
                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                                        </Trigger>
                                        <MultiTrigger>
                                            <MultiTrigger.Conditions>
                                                <Condition Property="IsSelected" Value="true"/>
                                                <Condition Property="IsSelectionActive" Value="false"/>
                                            </MultiTrigger.Conditions>
                                            <Setter Property="Background" TargetName="Bd" Value="Red"/>
                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
                                        </MultiTrigger>
                                        <Trigger Property="IsEnabled" Value="false">
                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </TreeView.Resources>
                <TreeView.ItemContainerStyle>
                    <StaticResourceExtension ResourceKey="tvStyle1" />
                </TreeView.ItemContainerStyle>

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Si ton treeview à une propriété DataTemplate, tu peux voir de ce coté là

Discussions similaires

  1. vb.net personnaliser le treeview
    Par House MD dans le forum VB.NET
    Réponses: 8
    Dernier message: 17/10/2008, 18h47
  2. TreeView : sélectiond'un TreeViewItem automatique
    Par pcayrol dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 01/07/2008, 13h50
  3. [WPF] filtrer un treeview
    Par maa dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 09/02/2008, 19h21
  4. [WPF] Déplier un TreeView
    Par UNi[FR] dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 22/11/2007, 14h19
  5. TreeView et ses événements
    Par Cpt Anderson dans le forum Delphi
    Réponses: 4
    Dernier message: 15/02/2007, 13h10

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