2010-02-01 5 views

Répondre

0

Comme vous l'avez dit - ce déclencheur ne fonctionne pas - j'ai vérifié ...

Mais j'ai trouvé la solution - dans la méthode OnApplyTemplate j'ai ajouté quelques lignes:

public override void OnApplyTemplate() 
{ 
    //... 
    if (this.IsEnabled == false) 
    { 
     this.Opacity = 0.4; 
    } 
} 
1

Dans WPF pour de telles choses, des déclencheurs sont utilisés.

<MyControl> 
<MyControl.Triggers> 
    <Trigger Property="IsEnabled" Value="false"> 
     <Setter Property="Opacity" Value="0.5" /> 
    </Trigger> 
</MyControl.Triggers> 
</MyControl> 
+0

Merci , mais je voudrais faire ces changements dans le fichier .cs pas dans xaml. Puis-je définir ces déclencheurs en quelque sorte dans le fichier .cs où j'ai la définition de mon coontrol? – Marta

+0

Bien sûr que vous pouvez, mais vous ne devriez pas - ce sera trop compliqué. Gérer l'événement IsEnabledChanged pour modifier l'opacité du contrôle – Yurec

+0

Vous ne pouvez pas utiliser un déclencheur comme celui-ci. Les déclencheurs de propriété ne sont autorisés que dans les collections Style ou Déclencheurs de modèle. Dans ce contexte, seul un EventTrigger serait valide. Cela dit, Yurec a raison de dire qu'il est préférable dans WPF de le faire dans ControlTemplate XAML pour votre contrôle que dans le code. –

Questions connexes