I ran into the same issue with Windows XP and 7.
The Foreground = "Black" attribute overrides the inline style trigger, which is an IsEnabled function.
To accomplish what you are looking for, you need to create your own style with Trigger on IsEnabled. The following code shows how to do this in a line, although you probably want to display the style in the resource section and use it in all of your menu items.
<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>
source share