J'ai un TextBox qui est défini par un ControlTemplate. En raison de ControlTemplate, le TextBox n'est plus automatiquement grisé lorsque la propriété IsEnabled est définie sur false.BackgroundColor d'un TextBox désactivé
Pour fournir cette fonctionnalité, j'utiliser le déclencheur suivant dans le ControlTemplate:
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{x:Static SystemColors.GrayTextBrush}" />
</Trigger>
Cela fonctionne très bien. Cependant, je dois également définir BackgroundColor mais je n'ai pas trouvé d'entrée correspondante dans SystemColors
. Quelle entrée est la bonne entrée pour l'arrière-plan des contrôles désactivés (TextBoxes)? Y a-t-il une autre source que SystemColors?
Je ne souhaite pas utiliser de valeur fixe. par exemple. Background="#f4f4f4"
, parce que je crains que dans certains environnements, l'arrière-plan désactivé ait une autre valeur et que mon contrôle ne soit pas comme il devrait ou même illisible (si par exemple la valeur de GrayTextBrush est proche de # f4).
+1 Merci. Poste intéressant, cependant la réponse à ma question que je n'ai pas trouvée. Ai-je manqué quelque chose? – HCL
Au lieu d'utiliser une valeur fixe pour votre arrière-plan, vous souhaitez utiliser une valeur SystemColors, correct? En regardant les styles XAML par défaut, il apparaît que Microsoft utilise la valeur SystemColors.ControlBrushKey comme couleur d'arrière-plan pour les contrôles qui sont désactivés. Cette couleur devrait contraster avec SystemColors.GrayTextBrush, de sorte que l'utilisateur sera capable de lire la valeur lorsque le contrôle est désactivé. –
+1 pour une bonne réponse. Notez l'utilisation de DynamicResource pour que l'application change automatiquement la couleur si l'utilisateur change la couleur dans le thème Windows, pendant que l'application est en cours d'exécution. –