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 :

Listbox item selection style


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut Listbox item selection style
    Bonjour à tous,

    J'ai un soucis avec les styles sous WPF sur la sélection d'un item de Listbox.
    J'ai une listbox représentant un ticket de caisse, celle ci contient donc les lignes d'un ticket qui ont des types différents (entête, produit, sous total, total...). J'ai défini différents templates pour les types de lignes afin qu'elles soient identifiables graphiquement :
    Code xaml : 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
    <ListBox FocusManager.IsFocusScope="True" x:Name="listTicket" Grid.Column="2" Grid.RowSpan="3" ItemsSource="{Binding TicketLines}" HorizontalContentAlignment="Stretch"  SelectionChanged="listTicket_SelectionChanged" SelectionMode="Multiple" ScrollViewer.HorizontalScrollBarVisibility="Disabled" BorderThickness="0">
                <ListBox.Resources>
                    <DataTemplate DataType="{x:Type data:TicketHeaderRowVM}">
                        <local:RowHeader />
                    </DataTemplate>
                    <DataTemplate DataType="{x:Type data:TicketProductRowVM}">
                        <local:RowProduct ListSelected="listRowProduct_SelectionChanged"/>
                    </DataTemplate>
                    <DataTemplate DataType="{x:Type data:TicketSubTotalRowVM}">
                        <local:RowSubTotal />
                    </DataTemplate>
                    <DataTemplate DataType="{x:Type data:TicketTotalRowVM}">
                        <local:RowTotal />
                    </DataTemplate>
                    <DataTemplate DataType="{x:Type data:TicketPaymentRowVM}">
                        <local:RowPayment />
                    </DataTemplate>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
                    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="White" />
                </ListBox.Resources>
            </ListBox>

    Comme vous avez pu le noter, j'ai également redéfinit les couleurs de sélection des items de la listbox. Cependant, ce mode de sélection est le même pour toutes les lignes de ma liste et j'aimerais pouvoir en définir un pour chaque type de ligne. J'ai essayé différentes choses, mais rien ne fonctionne...

    Merci d'avance.
    Gurdil

  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Re bonjour,

    J'ai finalement trouvé la solution (merci Truelle), c'était tout bête.
    Il suffit de définir un style dans le usercontrol qui se base sur la propriété IsSelected de la ListboxItem parent :

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <UserControl.Style>
        <Style TargetType="{x:Type UserControl}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="True">
                    <Setter Property="Background" Value="Red" />
                </DataTrigger>
                <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=IsSelected}" Value="False">
                    <Setter Property="Background"  Value="{StaticResource LightRed}" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </UserControl.Style>

    Et voila ça fonctionne à merveille !
    Gurdil

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

Discussions similaires

  1. MVVM ListBox/ListView Selected Item
    Par gridin dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 03/02/2011, 10h51
  2. VB6 - problème avec listbox a selection multiple
    Par captainamerica75 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/05/2007, 16h04
  3. ListBox avec selection avec differentes couleurs
    Par Flow_75 dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/02/2007, 00h25
  4. [Débutant] pb avec ListBox.Items
    Par boober31 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/02/2006, 02h12
  5. Réponses: 3
    Dernier message: 03/08/2005, 12h21

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