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 :

[ListView] Comment customiser la ligne de selection ?


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut [ListView] Comment customiser la ligne de selection ?
    hello

    kékun a une solution simple pour cutomizer la selection (c'est a dire la ligne bleue normal et le text en blanc) d'un element

    en fait ce que je veux faire c'est masquer la selection
    j'ai bien tente ce style (qu'on a avec le logiciel controlstyles)
    mais les coluom ne sont plus bonnes

    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
     
    <Style TargetType="ListBoxItem" 
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                   xmlns:s="clr-namespace:System;assembly=mscorlib" 
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   x:Key="toto">
                <Style.Resources>
                    <ResourceDictionary />
                </Style.Resources>
                <Setter Property="Panel.Background">
                    <Setter.Value>
                        <SolidColorBrush>#00FFFFFF</SolidColorBrush>
                    </Setter.Value>
                </Setter>
                <Setter Property="Control.HorizontalContentAlignment">
                    <Setter.Value>
                        <Binding Path="HorizontalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl, AncestorLevel=1}" />
                    </Setter.Value>
                </Setter>
                <Setter Property="Control.VerticalContentAlignment">
                    <Setter.Value>
                        <Binding Path="VerticalContentAlignment" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ItemsControl, AncestorLevel=1}" />
                    </Setter.Value>
                </Setter>
                <Setter Property="Control.Padding">
                    <Setter.Value>
                        <Thickness>2,0,0,0</Thickness>
                    </Setter.Value>
                </Setter>
                <Setter Property="Control.Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="ListBoxItem">
                            <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" Name="Bd" SnapsToDevicePixels="True">
                                <ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="Selector.IsSelected" Value="true">
                                    <!--<Setter Property="Panel.Background" TargetName="Bd" Value="Transparent" />
                                    <Setter Property="TextElement.Foreground" Value="Black"/>-->
                                </Trigger>
                                <MultiTrigger>
                                    <MultiTrigger.Conditions>
                                        <Condition Property="Selector.IsSelected" Value="true" />
                                        <Condition Property="Selector.IsSelectionActive" Value="false"/>
                                    </MultiTrigger.Conditions>
                                    <Setter Property="Panel.Background" TargetName="Bd" Value="Transparent" />
                                    <Setter Property="TextElement.Foreground" Value="Black"/>
                                </MultiTrigger>
                                <!--<Trigger Property="UIElement.IsEnabled">
                                    <Setter Property="TextElement.Foreground">
                                        <Setter.Value>
                                            <DynamicResource ResourceKey="{x:Static SystemColors.GrayTextBrushKey}" />
                                        </Setter.Value>
                                    </Setter>
                                    <Trigger.Value>
                                        <s:Boolean>False</s:Boolean>
                                    </Trigger.Value>
                                </Trigger>-->
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    en fait ce que je sais pas trop c'est comment reccup le style d'origine simplement pour le modifier

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    T'as essayé de mettre {x:Null} à la propriété FocusVisualStyle ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    oui j'ai tente cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            <ListView Height="125" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding Mode=Default, Source={StaticResource mangasDS}, XPath=/mangas/manga}" Margin="33,0,86,73.957" Style="{DynamicResource ListViewStyle1}" VerticalAlignment="Bottom" SelectionChanged="ListView_SelectionChanged"
                      FocusVisualStyle="{x:Null}"                  >
                <ListView.View>
                    <GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding XPath=title}" />
                        <GridViewColumn DisplayMemberBinding="{Binding XPath=histoire}" />
                    </GridView>
                </ListView.View>
            </ListView>
    cal dit j'ai trouve la solution sympa
    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
     
    <Style TargetType="{x:Type ListViewItem}" x:Key="toto"> 
                <Setter Property="Background" Value="Red" />
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListViewItem}" >
                            <Grid Background="Red">
                                <GridViewRowPresenter
                                    Content="{TemplateBinding Content}"
                                    Columns="{TemplateBinding GridView.ColumnCollection}"/>
                            </Grid>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ListView Margin="33,97,86,220" 
                      IsSynchronizedWithCurrentItem="True" 
                      ItemsSource="{Binding Mode=Default, Source={StaticResource mangasDS}, XPath=/mangas/manga}" Style="{DynamicResource ListViewStyle1}" 
                      ItemContainerStyle="{StaticResource toto}"
    		>           
                <ListView.View>
    				<GridView>
                        <GridViewColumn DisplayMemberBinding="{Binding XPath=title}"/>
                        <GridViewColumn DisplayMemberBinding="{Binding XPath=histoire}"/>
                    </GridView>
    			</ListView.View>
    		</ListView>
    ceci etant ce qui me gene le plus c'est de trouver comment est representé l'orgine sinon c'est delicat de modifier

  4. #4
    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
    Par défaut
    Salut,

    Citation Envoyé par ikeas
    en fait ce que je sais pas trop c'est comment reccup le style d'origine simplement pour le modifier
    Via Blend, tu peux faire un clic droit sur ta ListView, faire "Add ListViewItem". Puis tu sélectionnes le ListViewItem et tu peux récupérer le style par défaut en faisant dans le menu "Object -> Edit Style -> Edit a copy".

    Ca peut donner ça (j'ai juste commenté une ligne et mis Orange comme couleur de sélection) :
    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
      	<Style x:Key="ListViewItemStyle1" TargetType="{x:Type ListViewItem}">
      		<Setter Property="Background" Value="Transparent"/>
      		<Setter Property="VerticalContentAlignment" Value="Center"/>
      		<Setter Property="Template">
      			<Setter.Value>
      				<ControlTemplate TargetType="{x:Type ListViewItem}">
      					<Border SnapsToDevicePixels="true" x:Name="Bd" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Padding="{TemplateBinding Padding}">
      						<GridViewRowPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
      					</Border>
      					<ControlTemplate.Triggers>
      						<Trigger Property="IsSelected" Value="true">
      							<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
      							<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
      						</Trigger>
      						<MultiTrigger>
      							<MultiTrigger.Conditions>
      								<Condition Property="IsSelected" Value="true"/>
      								<!--<Condition Property="Selector.IsSelectionActive" Value="false"/>-->
      							</MultiTrigger.Conditions>
      							<Setter Property="Background" TargetName="Bd" Value="Orange"/>
      							<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.Triggers>
      			<Trigger Property="Selector.IsSelected" Value="False"/>
      			<EventTrigger RoutedEvent="FrameworkElement.Loaded"/>
      		</Style.Triggers>
      	</Style>

    Bref c'est dans l'idée du code du premier message .

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    merci
    j'avais pas pense a rajouter un listviewitem dans blend ....

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2024, 14h02
  2. Réponses: 1
    Dernier message: 01/09/2011, 16h45
  3. Réponses: 5
    Dernier message: 27/07/2010, 13h59
  4. Comment pointer une ligne dans une ListView
    Par Tolede78 dans le forum Débuter
    Réponses: 6
    Dernier message: 27/05/2009, 09h05
  5. Recuperation du numero de la ligne du select
    Par P'tit Jean dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 15/10/2007, 18h31

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