Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

Actualités

[WPF] Modifier le style d'un contrôle et revenir au style par défaut

L'un des points forts de WPF (Windows Presentation Foundation), ce sont les styles.

En effet, grâce à eux, vous allez pouvoir changer, dynamiquement, l'apparence de vos contrôles. Pour cela, il vous faut utiliser un ResourceDictionary dans lequel vous allez stocker vos différents styles puis, dans votre code C# (ou VB.NET), il vous suffirat de choisir le style a adopter.

Voyons cela en exemple:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:MathFX="clr-namespace:MathFXEditor.Library"
    >
<Style x:Key="MathFXTextBoxEditMode" TargetType="{x:Type MathFX:MathFXTextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
    <Setter Property="KeyboardNavigation.TabNavigation" Value="None"/>
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type MathFX:MathFXTextBox}">
          <Grid>
            <Border x:Name="Border" Background="Transparent" BorderBrush="Gray" BorderThickness="1" Padding="2" CornerRadius="2">
              <ScrollViewer
                        Margin="0"
                        x:Name="PART_ContentHost"
                        Background="{TemplateBinding Background}"
                        Width="{TemplateBinding Width}"
                        Height="{TemplateBinding Height}"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                        VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                        Foreground="{TemplateBinding Foreground}"
                />
            </Border>
          </Grid>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>

Ici, on déclare un ResourceDictionary dans lequel on y ajouter un style. On lui donne une clé (pour pouvoir l'utiliser), le type du contrôle auquel on appliquera ce style et le tour est joué. Pour utiliser ce style, il ne vous reste qu'a faire:

#region Properties

ResourceDictionary resourceDictionary = null;

#endregion

#region Constructors

static MathFXTextBox()
{
   DefaultStyleKeyProperty.OverrideMetadata(typeof(MathFXTextBox), new FrameworkPropertyMetadata(typeof(MathFXTextBox)));
}

public MathFXTextBox()
: base()
{
   this.resourceDictionary = new ResourceDictionary();
   this.resourceDictionary.Source = new Uri("pack://application:,,,/MathFXEditor.Library;component/themes/generic.xaml", UriKind.Absolute);
}

#endregion

protected override void OnMouseDoubleClick(System.Windows.Input.MouseButtonEventArgs e)
{
   base.OnMouseDoubleClick(e);

   this.Style = resourceDictionary["MathFXTextBoxEditMode"] as Style;
}

Et là, votre contrôle changera de style automatiquement. Oui mais voilà, comment faire pour revenir au style par défaut ?

Et bien tout simplement en utilisant la propriété DefaultStyleKey Wink

protected override void OnLostKeyboardFocus(System.Windows.Input.KeyboardFocusChangedEventArgs e)
{
   base.OnLostKeyboardFocus(e);

   this.Style = this.DefaultStyleKey as Style;
}

 

Et voilà, le tour est joué Smile

 

A+

 

del.icio.us tags:

Technorati tags:
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: lundi 19 février 2007 21:49 par Thomas LEBRUN

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01