Button オブジェクトに IsMouseOVER プロパティがあることがわかります。
しかし、IsMouseOver を持たないグリッドまたはその他の要素のマウスオーバーの効果を作成するにはどうすればよいでしょうか??
ありがとうマルコム
編集:私はそれを理解しました。トリガーの設定方法が間違っていました。
デッドスレッドに返信していることに気づきましたが、スレッドに出くわしたため、スレッドに回答がないため、回答します。
WPF グリッドには「IsMouseOver」プロパティがあります。
「IsMouseOver」プロパティは、マウスがグリッド自体内の「ヒット テスト可能な」コントロール (つまり、ボタン、またはコンボ ボックス) の上にある場合にのみ変化するため、この質問が出されたと思います。
したがって、「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>
上記のグリッドとその内容は半透明で表示されます。最初の列 (何も含まれていない) にカーソルを合わせると、不透明度が完全に設定されないことに気付くでしょう。ただし、2 番目の列のボタンにカーソルを合わせると、不透明度は完全に設定されます。これは、何も入っていない最初の列はヒット テストできないためです。一方、2 番目の列内のボタンはヒット テスト可能であるため、イベントがトリガーされます。
グリッドの IsMouseOver プロパティで、マウスがグリッド自体の上にあることを検出するには、グリッドの Background プロパティを 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>
-フリニー
それは、WPF オブジェクトの "MouseEnter" および "MouseLeave" アクションです。