2009-06-25 6 views
2

Je veux relooker juste une partie d'un contrôle WPF.Restyling juste une partie d'un contrôle wpf. C'est possible?

(Plus précisément, je veux faire les boutons de défilement sur un ScrollBar plus)

Maintenant, je peux le faire sans problème. J'ai extrait le style par défaut. Fait les réglages nécessaires et inclus le style modifié dans mon application.

Le problème est que je dois inclure l'ensemble du modèle de contrôle dans le style de remplacement, lorsque tout ce que je change est de 2 valeurs.

<Setter Property="Control.Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="ScrollBar"> 
     <Grid Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True"> 
      <Grid.ColumnDefinitions> 
      <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" /> 
      <ColumnDefinition Width="1E-05*" /> 
      <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}" /> 
      </... etc 

Je veux juste changer le MaxWidth sur les définitions de colonne à 50.

Ma question est la suivante: Est-il possible que je puisse faire ce tweak au modèle sans avoir à inclure tout le reste? Je veux toujours que toutes les autres parties du modèle de contrôle fonctionnent comme celles par défaut.

Répondre

4

Dans ce cas, vous devriez pouvoir, puisque le modèle tend la main et saisit la valeur d'une ressource:

<ScrollBar xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
    <ScrollBar.Resources> 
     <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}">50</sys:Double> 
    </ScrollBar.Resources> 
</ScrollBar> 

Si le modèle était codé en dur la valeur, vous seriez hors de la chance .

+0

Fantastique. Un joli Kent. –

+0

Astuce cool, ça pourrait probablement s'avérer utile pour moi aussi :) –

Questions connexes