Я понимаю, что я отвечаю на мертвую ветку, но так как я натолкнулся на нее, и поскольку на ветку нет ответа, я собираюсь ответить на нее.
WPF Grid имеет свойство IsMouseOver.
Я думаю, что этот вопрос был задан, потому что свойство «IsMouseOver» изменяется только в том случае, если указатель мыши находится над каким-либо элементом управления (например, Button или ComboBox) внутри самой Grid.
Поэтому может показаться, что свойство IsMouseOver не работает (особенно если вы используете в триггере для установки свойства Visible таблицы).
Например:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="1">A Button</Button>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="0.5"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="1"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
Приведенная выше сетка и ее содержимое будут отображаться с полупрозрачностью.
Вы заметите, что непрозрачность не будет установлена на полную, если вы наводите курсор на первый столбец (который ничего не содержит); однако непрозрачность будет установлена на полную, если вы наведите курсор мыши на кнопку во втором столбце. Это потому, что первый столбец, в котором ничего нет, не может быть проверен на попадание; в то время как кнопка во втором столбце проверяется на попадание, и поэтому событие инициируется.
Если вы хотите, чтобы свойство IsMouseOver в Grid определяло, когда мышь находится где-то над самой Grid, все, что вам нужно сделать, это установить для свойства Background для Grid значение, отличное от Null (например, установите его в Transparent). Установка свойства Background сделает Grid "тестируемым на попадание".
Следующий код решит проблему:
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="1">A Button</Button>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="0"></Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="1"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>
</Grid>
-Frinny