Проблема в том, что ваша сетка имеет нулевой фон, поэтому она не видна при тестировании мыши. Если для фона задано значение «Прозрачный», он будет проверяться на попадание, как если бы вы установили его на зеленый.
Более подробную информацию можно найти здесь .
Я попробовал вашу кнопку, и фон был правильно настроен на прозрачный. Значение красного отображается только за долю секунды. Это связано с тем, что в теме Aero (я на Windows 7) ControlTemplate Button использует собственный хром для обеспечения анимированных переходов состояний (т. Е. При наведении курсора и т. Д.). Этот пользовательский элемент chrome использует внутренние кисти и игнорирует свойство Background.
Это не имеет ничего общего с приоритетом свойства. Для Сетки, это просто вопрос того, что ваша Сетка не проверяется на попадание. Поэтому IsMouseOver не будет иметь значение true, если только у него нет ненулевого фона (или дочернего элемента, который отображает что-либо).
Вы можете увидеть Приоритет в действии здесь:
<Grid Background="Blue">
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Setter Property="Background" Value="Green"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
В приведенном выше описании Сетка всегда будет синей, так как она имеет наивысший приоритет (то есть локальная или № 3). В то время как красный (# 6) имеет приоритет над зеленым (# 8).
В случае с кнопкой у вас есть что-то вроде этого:
<Button Background="Blue">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="border" Background="{TemplateBinding Background}">
<ContentPresenter />
</Border >
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>
В этом случае в игре есть два свойства фона: кнопка и граница в шаблоне элемента управления. Свойство Background для кнопки используется по умолчанию для Border, но при наведении курсора мыши используется красная кисть. В этот момент не имеет значения, какое значение свойства Background у кнопки установлено.