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 :

[WPF - XAML] Style questions


Sujet :

Windows Presentation Foundation

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut [WPF - XAML] Style questions
    Bonjour à tous,

    j'ai quelques difficultés concernant la modification de style en xaml.

    Tout d'abord, j'ai le style suivant qui s'applique sur un ListBoxItem :

    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
    <Style x:Key="Style_ListBoxItem_Header_Default" TargetType="{x:Type ListBoxItem}">
            <Setter Property="Width" Value="130" />
            <Setter Property="Margin" Value="10,0,0,0" />
            <Setter Property="Foreground" Value="White" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Grid>
                            <Border x:Name="Bd" CornerRadius="4,4,0,0" BorderBrush="#9d9d9d" BorderThickness="1,1,1,0" Background="{StaticResource TabbedButtonBrushDefault}" >
                                <ContentPresenter Name="Content" ContentSource="Content" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                                                  HorizontalAlignment="Center"
                                                  VerticalAlignment="Center"
                                                  RecognizesAccessKey="True"  />
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter TargetName="Bd" Property="Background" Value="{StaticResource TabbedButtonBrush}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    J'essaye désespérément de remplacer le ContentPresenter par un TextBlock sans succès j'ai tout essayé (Sur la propriété Text de faire un TemplateBinding sur Content etc..)


    Ensuite toujours sur un ListBoxItem, j'ai fait ceci :


    Deux petits problèmes ici :
    - Le pixel blanc à gauche entre le ListBoxItem et la bordure de la ListBox
    - Ensuite je voulais savoir si il y avais pas un moyen lorsque le premier élément est sélectionnée d'arrondir son border avec CornerRadius mais seulement si c'est le premier...

    Pour la listbox
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Style x:Key="Style_ListBox_User" TargetType="{x:Type ListBox}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBox">
                        <Border Name="Border" Background="White" BorderThickness="1" CornerRadius="10" BorderBrush="Black">
                            <ScrollViewer Margin="0" Focusable="false">
                                <StackPanel Margin="0" IsItemsHost="True" />
                            </ScrollViewer>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    ListBoxItem
    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
    35
    36
    37
    38
    <Style x:Key="Style_ListBoxItem_User" TargetType="{x:Type ListBoxItem}">
            <Setter Property="SnapsToDevicePixels" Value="true"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
     
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border Name="Bd" Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}"
                                    Background="White"  Height="50"
                                    BorderThickness="1,1,0,1">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition />
                                    <ColumnDefinition />
                                    <ColumnDefinition />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="25" />
                                    <RowDefinition Height="25" />
                                </Grid.RowDefinitions>
                                <TextBlock x:Name="UserName" FontWeight="Bold" Text="Test" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" />
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="???" Value="0">
                                <Setter TargetName="Bd" Property="CornerRadius" Value="10,10,0,0" />
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter TargetName="Bd" Property="Background" Value="{StaticResource B2}"/>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter TargetName="Bd" Property="Background" Value="{StaticResource B1}"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    Merci d'avance.

    Cordialement,
    NeoKript

  2. #2
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Bonjour NeoKript,

    Pour ta première question, tu peux remplacer le ContentPresenter par un TextBlock mais il faut que tu bindes sa propriété text au contenu :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <TextBlock Text="{TemplateBinding Content}" />

    Pour la deuxième question, tu peux utiliser l'alternationCount sur la listbox en mettant comme valeur Int32.MAxValue (la valeur chiffrée que je ne connais pas par coeur) et ensuite dans le style faire un dataTrigger sur la propriété AlternationIndex : si la valeur est '1' alors arrondir les angles.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <Style.Triggers>
            <Trigger Property="ListBox.AlternationIndex" Value="1">
              <Setter Property="CornerRadius" Value="3"/>       
      </Trigger>

    Tu as d'autres exemples sur MSDN : http://msdn.microsoft.com/fr-fr/libr...tionindex.aspx

    Bon courage,

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Par défaut
    Salut,

    merci pour ta réponse pour le template Binding Content sur la propriété Text, j'étais persuadé d'avoir essayé... Mais ça fonctionne c'est bon !

    Et la seconde ListBox, la "feinte" du alternative count fonctionne, je n'y avais pas pensé !

    Merci encore

  4. #4
    Membre émérite Avatar de jmix90
    Homme Profil pro
    Consultant .Net
    Inscrit en
    Juillet 2007
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2007
    Messages : 576
    Par défaut
    Super !

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

Discussions similaires

  1. WPF, XAML, Un broblème avec mon Style TabControl
    Par sou_dj dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 02/06/2011, 11h38
  2. [Wpf/Xaml] Style Conditionnel
    Par bilel59 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 06/09/2010, 16h31
  3. Réponses: 3
    Dernier message: 16/01/2008, 12h45
  4. [WPF][Resources & styles] récupération d'un style xaml en C#?
    Par bakonu dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 13/11/2007, 16h30
  5. [WPF-XAML] freeBrowser 1.0 - Système de skin
    Par GeffD dans le forum Windows Presentation Foundation
    Réponses: 25
    Dernier message: 30/01/2007, 16h54

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