7 votes

TemplateBinding d'un déclencheur de données de style dans ControlTemplate

Dans le XAML suivant, j'utilise un Rectangle avec une bordure comme modèle pour un ToggleButton. Je veux que la couleur de la BorderBrush soit différente pour refléter la valeur changeante de ToggleButton.IsChecked. Malheureusement, ma tentative d'utiliser un TemplateBinding dans le DataTrigger ne fonctionne pas. Que dois-je faire à la place ?

                        <Setter Property="BorderBrush" Value="Gainsboro" /> 
                        <Style.Triggers>
                            <!-- TemplateBinding ne fonctionne pas.-->
                            <DataTrigger                              
                                 Binding={TemplateBinding Property=IsChecked}    
                                 Value="True">
                                <Setter Property="BorderBrush" Value="Black" />
                            </DataTrigger>
                        </Style.Triggers>

MODIFIER

Lorsque je compile et recharge le designer, j'obtiens l'erreur suivante :

Erreur 1 La propriété 'Binding' ne prend pas en charge les valeurs de type 'TemplateBindingExpression'.

SOLUTION

    ...

9voto

Rob Points 3027

Vous pourriez utiliser un déclencheur dans le ControlTemplate, par exemple.

0voto

Josh Points 38617

Un problème que je vois tout de suite est que vous définissez BorderBrush comme une valeur de propriété locale sur la bordure. Cela remplacera toujours la valeur appliquée par le style. Essayez de supprimer l'attribut BorderBrush explicite et voyez si cela fonctionne.

Bordure BorderBrush="Gainsboro" BorderThickness="1"

Héritage des valeurs de propriété de dépendance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X