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 :

Problèmes avec les styles wpf c#


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Points : 34
    Points
    34
    Par défaut Problèmes avec les styles wpf c#
    Bonjour tout le monde,

    Je rencontre actuellement deux problèmes au niveau de mes styles.
    1-

    J'ai fait un binding d'une liste dans un datagrid et ensuite j'ai voulu changer le backgroundcolor des header de mon tableau. Mais j'obtiens ça:
    http://pasteboard.co/23topyY2.png
    Mon style est bien appliqué mais je vois que les tracés qui séparent chaque colonne on disparu de mon header. Voici mon bout de code xaml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <DataGrid.ColumnHeaderStyle>
                        <Style TargetType="{x:Type DataGridColumnHeader}">
                            <Setter Property="FontWeight"  Value="Bold" />
                            <Setter Property="Background"  Value="lightblue" />
                            <Setter Property="Height"  Value="30" />
                        </Style>
    </DataGrid.ColumnHeaderStyle>
    2-

    J'ai créé un bouton qui contient du texte et une image.
    Et je voudrais que les coins de mon bouton soient arrondis. Le problème est que la balise button n'accépte pas la proprièté "CornerRadius".
    J'ai essayé d'appliquer mon style comme suit:
    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
     
     <Button  Width="120" Height="30"  Background="#a1c4d0" BorderThickness="10" Margin="20,10,100,0" >
     
                   <Button.Style>
                        <Style TargetType="Button">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="Button">
                                        <Border 
                                          x:Name="Border"  
                                          CornerRadius="10"
                                            Background="#a1c4d0" >
                                        </Border>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Button.Style>
                    <StackPanel Orientation="Horizontal">
                        <Label Content="{Binding Path=administrateur}"/>
                        <Image Source="Images\mark.png"  Stretch="None" Height="25" Width="30" />
                    </StackPanel>
                </Button>
    Mais ça ne marche pas vraiment car le style est appliqué à mon bouton mais je ne vois plus mon label et mon image.

    Merci d'avance de m’éclairer sur ces deux points.

    Cordialement

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Pour le bouton, c'est normal que tu perdes l'image et le label car tu n'as pas définit de ContentPresenter dans la Border :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Border ...>
        <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Border>

    Pour la première question, je pense qu'il faut que tu agisses sur le template directement :
    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
    23
    24
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="my:DataGridColumnHeader">
                <my:DataGridHeaderBorder
                    x:Name="headerBorder"
                    Background="lightblue">
                    <Border
                        BorderThickness="1"
                        CornerRadius="0"
                        Background="lightblue"
                        BorderBrush="White">
                        <Grid>
                            <TextBlock
                                Text="{TemplateBinding  Content}"
                                VerticalAlignment="Center"
                                HorizontalAlignment="Center"
                                TextWrapping="Wrap"
                            />
                        </Grid>
                    </Border>
                </my:DataGridHeaderBorder>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Merci pour votre réponse.
    Mais j'ai cette erreur:
    Erreur 2 DataGridHeaderBorder n'est pas pris en charge dans un projet Windows Presentation Foundation (WPF).

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Apparement il y aurait un bug avec ça. Il faut rajouter ceci dans la balise d'ouverture du fichier XAML :
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:my="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
    Et rajouter une référence à l'assembly PresentationFramework.Aero
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    J'ai rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xmlns:my="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
    Et j'ai rajouté aussi une référence à PresentationFramework.Aero
    J'ai toujours la même erreur :
    -
    DataGridHeaderBorder n'est pas pris en charge dans un projet Windows Presentation Foundation (WPF).
    -
    Le type 'DataGridHeaderBorder' est introuvable. Assurez-vous qu'il ne manque aucune référence d'assembly et que tous les assemblys référencés ont été générés.

    Merci d'avance

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Tu es sur quelle version de WPF ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Je travaille avec visual studio express 2012 pour windows

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ok, est-ce que tu as buildé ta solution après avoir ajouté la référence à PresentationFramework.Aero ?

    Si ça ne change rien, il y a une autre façon de gérer cet objet en passant via un objet Style. Tu en sauras plus ici : Styling Microsoft's WPF DataGrid, en particulier après le titre "DataGrid Column Headers".
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 48
    Points : 34
    Points
    34
    Par défaut
    Je te remercie pour ta réponse je vais y jeter un coup d'oeil.

Discussions similaires

  1. Problèmes avec les styles
    Par Ikes72000 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 17/10/2014, 20h55
  2. Problème avec les UserControl WPF
    Par helper_moi dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 16/06/2010, 18h39
  3. Réponses: 0
    Dernier message: 29/10/2008, 12h32
  4. [itext] Problème avec les styles
    Par jgavard dans le forum Documents
    Réponses: 3
    Dernier message: 17/03/2008, 14h17
  5. Problème avec les styles d'un tableau
    Par psychoBob dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 20/05/2006, 03h13

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