2010-04-23 2 views
4

Lorsque l'élément de menu principal foreground est défini sur noir et que l'arrière-plan est blanc, tout fonctionne correctement pour XP et Windows 7. Mais nous utilisons un menu principal barre qui est noire et avec premier plan blanc. Cela provoque des problèmes dans Windows 7 uniquement. Pourquoi est-ce que lorsque vous définissez un premier plan menuitem à noir, il ne deviendra pas gris lorsqu'il est désactivé.WPF MenuItem Couleur lorsque le noir ne passe pas au gris lorsqu'il est désactivé

Répondre

4

je suis tombé sur le même problème avec Windows XP et 7.

Le premier plan = attribut « Black » remplace le déclencheur construit dans le style qui est une fonction de IsEnabled. Pour accomplir ce que vous cherchez, il vous faut construire votre propre style avec un déclencheur sur IsEnabled. Le code suivant montre comment faire ceci en ligne, bien que vous souhaitiez probablement tirer le Style dans une section de ressources et l'utiliser sur tous vos éléments de menu.

<MenuItem Header="My Item" IsEnabled="{Binding MyItemEnabled}"> 
    <MenuItem.Style> 
     <Style TargetType="{x:Type MenuItem}"> 
      <Setter Property="Foreground" Value="Black"/> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Foreground" Value="Gray"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </MenuItem.Style> 
</MenuItem> 
+4

Par ailleurs, au lieu d'avoir la gâchette définir la propriété de premier plan à Gray, une meilleure approche est de définir la propriété Opacité à 50. – Eric

+3

Je ne sais pas si cela est juste une différence dans les versions, mais 'Opacité' est un double; il doit être défini sur 1.0 pour activé et 0.5 pour désactivé. – RustyTheBoyRobot

Questions connexes