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 - Changer la couleur d'une ligne sélectionnée. [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut WPF - Changer la couleur d'une ligne sélectionnée.
    Bonjour,

    Je débute avec les WPF ( langage XAML ) et j'essaie désespérément de changer la couleur d'une ligne sélectionnée dans mon DataGrid.

    Je me suis créer une ressource dans mon grid, mais je n'arrive pas à l'utiliser :


    <Grid.Resources>
    <!-- DataGridCell Style-->
    <Style x:Key="MyDataGridCellStyle" TargetType="{x:Type DataGridCell}">
    <Setter Property="Background" Value="White"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
    <Setter Property="Background" Value="Red"/>
    <Setter Property="Foreground" Value="White"/>
    </Trigger>
    </Style.Triggers>
    </Style>
    </Grid.Resources>En gros, ici je crée un style "MyDataGridCellStyle" à destination des cellules du grid.

    Sur ce style, j'ai mis en place un trigger qui colorise en rouge la ligne sélectionnée et met en blanc les caractères.

    J'ai pas mal écumé les forums, je n'ai pas trouver d'explication sur l'utilisation d'un style crée.

    Merci d'avance pour les pistes ou idées de recherches.

    JC

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 022
    Points : 5 455
    Points
    5 455
    Par défaut
    Et comment tu affectes le style à la datagrid que tu souhaites?

  3. #3
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Salut Micka,

    Je ne comprends pas ta question..??

    JC

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 102
    Points : 66
    Points
    66
    Par défaut
    Bon, en bataillant pas mal, j'ai trouvé un début de solution ( pour ceux que ça peut intéresser ) :

    Voilà, j'ai créer un style pour mes lignes de DataGrid et aussi pour mes TexBox en début de déclarative de ma fenêtre :

    <Window x:Name="FEN_LIST_INTERLO" x:Class="VCNET_POC_INTERLOCUTEURS_V1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:VCNET_POC_INTERLOCUTEURS_V1"
    mc:Ignorable="d"
    Title="Liste Interlocuteurs" Height="529" Width="1034" Background="#FFD3C9C9" Topmost="True" ResizeMode="CanResizeWithGrip" Cursor="Arrow">
    <Grid Margin="10,0,2,0" RenderTransformOrigin="0.439,0.495" Height="499" VerticalAlignment="Bottom">


    <Grid.RowDefinitions>
    <RowDefinition Height="5*"/>
    <RowDefinition Height="98*"/>
    <RowDefinition Height="76*"/>
    <RowDefinition Height="320*"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    <ColumnDefinition Width="271*"/>
    <ColumnDefinition Width="197*"/>
    <ColumnDefinition Width="27*"/>
    <ColumnDefinition Width="280*"/>
    <ColumnDefinition Width="36*"/>
    <ColumnDefinition Width="23*"/>
    <ColumnDefinition Width="130*"/>
    <ColumnDefinition Width="27*"/>
    </Grid.ColumnDefinitions>


    <Grid.Resources>
    <!-- Je définie un style que j'applique aux lignes du DataGrif -->
    <Style x:Key="{x:Type DataGridCell}" TargetType="{x:Type DataGridCell}">
    <Setter Property="Background" Value="Ivory"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Style.Triggers>
    <Trigger Property="IsSelected" Value="True">
    <Setter Property="Background" Value="Gray"/>
    <Setter Property="Foreground" Value="BlanchedAlmond"/>
    </Trigger>
    </Style.Triggers>
    </Style>

    <!-- Je définie un style que j'applique à toutes les DataBox de la Fenêtre -->
    <Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
    <Setter Property="Foreground" Value="Black" />
    <Setter Property="Background" Value="Gray" />
    <Setter Property="FontSize" Value="14" />
    <Setter Property="Validation.ErrorTemplate">
    <Setter.Value>
    <ControlTemplate>
    <Border BorderBrush="Yellow" BorderThickness="2">
    <AdornedElementPlaceholder/>
    </Border>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    <Style.Triggers>
    <Trigger Property="IsEnabled" Value="False">
    <Setter Property="Opacity" Value="0.6" />
    </Trigger>
    </Style.Triggers>
    </Style>

    </Grid.Resources>[CODE][CODE]

    Comme on peut le voir, j'ai tout mis dans un Grid.Resources ( sorte de container qui contient toutes les déclaration de styles. )


    Ensuite, ces styles s'appliqueront à mes objets :

    [CODE][CODE]<!--Définition de la Texte box " Connextion Etablie " -->
    <TextBox x:Name="TXTBLC_INFO_CONNECT" Grid.Column="3" HorizontalAlignment="Left" Height="23" Margin="59,0,0,0"
    TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="204" Grid.Row="1"/>


    <!--Définition de la DataGrid -->
    <DataGrid x:Name="LISTE_INTERLO" HorizontalAlignment="Left" Margin="15,65,0,0" Grid.Row="1"
    VerticalAlignment="Top" Grid.ColumnSpan="4" Height="420" Grid.RowSpan="3" Width="755"
    AlternatingRowBackground="Gray" SelectionChanged="LISTE_INTERLO_SelectionChanged" Style="" />

    <!--Définition de la Texte box " Temps d'exécution " -->
    <TextBox x:Name="TXTBLC_RAPPORT_CONNECT" Grid.Column="1" HorizontalAlignment="Left" Height="23" Margin="161,31,0,0"
    TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="332" Grid.Row="1" Grid.ColumnSpan="3"/>
    J'en profite pour signaler que dans la déclaration des styles, on peut déclarer des triggers ( voir plus haut ).


    Voilà, si ça peut aider....


    Reste que je n'arrive toujours pas à créer un style spécifique pour l'associer à seulement un objet.


    Je continue à chercher.


    JC

  5. #5
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Il faut utiliser la balise "code" représentée pas "#" dans l'éditeur.

    Merci

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 24/02/2011, 11h54
  2. Réponses: 7
    Dernier message: 28/06/2005, 11h53
  3. Réponses: 8
    Dernier message: 14/05/2004, 11h18
  4. [VB6]Changer la couleur d'une ligne d'un ListView
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/03/2003, 17h02
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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