Partage
  • Partager sur Facebook
  • Partager sur Twitter

WPF change le style template

Sujet résolu
    9 juillet 2019 à 16:30:54

    Bonjour, Je suis entrain essayer de développer une application en c# WPF j'ai un blocage sur le Fonctionnement XAML

    j'ai crée un bouton avec un Template a deux rectangles un couleur rouge et l'autre couleur gris avec le texte dessus

    J'aimerai pouvoir modifié le rectangle rouge en une autre couleur par une variable

    le bouton est dans une bibliothèque.

    voici le rendu que j'ai actuellement : 

    et j'aimerai réussir à faire c'est sa  : 

    ------------------------------------------------

    <!--button general-->
        <Style x:Key="FocusVisual_button_principal">
            <Setter Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate>
                        <Rectangle Margin="2" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="1" StrokeDashArray="1 2"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="button_perso_principal" TargetType="{x:Type Button}">
            <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual_button_principal}"/>
            <Setter Property="Width" Value="135" />
            <Setter Property="Height" Value="25" />
            <Setter Property="Background" Value="{x:Null}"/>
            <Setter Property="BorderBrush" Value="{x:Null}"/>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="HorizontalContentAlignment" Value="Left"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Padding" Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                            <Grid>
                                <Rectangle x:Name="rectangle_texte" HorizontalAlignment="Right" Height="23" VerticalAlignment="Center" Width="160">
                                    <Rectangle.Fill>
                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                            <GradientStop Color="#FF515050" Offset="0"/>
                                            <GradientStop Color="#FF404040" Offset="1"/>
                                        </LinearGradientBrush>
                                    </Rectangle.Fill>
                                    <Rectangle.RenderTransform>
                                        <TransformGroup>
                                            <ScaleTransform/>
                                            <SkewTransform AngleX="21.161"/>
                                            <RotateTransform/>
                                            <TranslateTransform X="-5.613"/>
                                        </TransformGroup>
                                    </Rectangle.RenderTransform>
                                </Rectangle>
                                <Rectangle x:Name="rectangle_rouge" Fill="red" HorizontalAlignment="Left" Height="23" VerticalAlignment="Center" Width="10">
                                    <Rectangle.RenderTransform>
                                        <TransformGroup>
                                            <ScaleTransform/>
                                            <SkewTransform AngleX="21.161"/>
                                            <RotateTransform/>
                                            <TranslateTransform X="-5.613"/>
                                        </TransformGroup>
                                    </Rectangle.RenderTransform>
                                </Rectangle>
                                <ContentPresenter x:Name="contentPresenter" TextBlock.FontFamily="Copperplate Gothic Light" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="15,0,0,0" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsDefaulted" Value="true">
                                <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter Property="Foreground" Value="red" />
                            </Trigger>
                            <Trigger Property="IsPressed" Value="true">
                                <Setter Property="Foreground" Value="#FFC30202" />
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter Property="Foreground" Value="#FFCDCDCD" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    Merci de votre aide

    -
    Edité par LoicR089 9 juillet 2019 à 16:38:13

    • Partager sur Facebook
    • Partager sur Twitter
      12 juillet 2019 à 14:15:16

      Je suis loin d'être un pro du WPF mais à ta place, j'aurais créé un UserControl du bouton et j'aurais ajouté une DependencyProperty Couleur="" pour permettre d'adapter le style en fonction de tes besoins.
      • Partager sur Facebook
      • Partager sur Twitter
        14 juillet 2019 à 12:04:31

        J'ai réussi, j'ai lié le rectangle couleur au background

        -
        Edité par LoicR089 14 juillet 2019 à 12:05:38

        • Partager sur Facebook
        • Partager sur Twitter

        WPF change le style template

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown